[メモ]mysqlで曜日を出力[覚書]

お久しぶりです。

今回は、mysqlで曜日まで出力するときの書き方です。

SELECT (
  CASE dayofweek(date_format('20211201', '%Y-%m-%d'))
    WHEN 1 THEN '日'
    WHEN 2 THEN '月'
    WHEN 3 THEN '火'
    WHEN 4 THEN '水'
    WHEN 5 THEN '木'
    WHEN 6 THEN '金'
    WHEN 7 THEN '土'
  END
)
AS week

見ての通り、dayofweekを使うことで日曜~土曜でそれが1~7の数値で返されます。
で、上記のようにCASEで日本語の曜日に変換して出力しています。

大体はプログラムの方で曜日を出すようにしているんですが、たまにsqlのみで出したい場合もあるので、その時用の覚書です。

スポンサーリンク

[mysql]前後のデータ取得[メモ]

お久しぶりです

あまり使う機会がないけどmysqlで前後の行データの取得がしたい場合のsqlの書き方をメモしておきます。
例としてWordPressの投稿テーブル

SELECT 
@cur_id := ID as ID,
post_date,
post_title,
@prev_id := (SELECT ID FROM wp_posts WHERE post_type='post' AND post_status='publish' AND ID<@cur_id ORDER BY ID DESC LIMIT 1) as prev_ID,
(SELECT post_title FROM wp_posts WHERE ID=@prev_id ) as prev_title,
@next_id := (SELECT ID FROM wp_posts WHERE post_type='post' AND post_status='publish' AND ID>@cur_id ORDER BY ID ASC LIMIT 1) as next_ID,
(SELECT post_title FROM wp_posts WHERE ID=@next_id ) as next_title
FROM `wp_posts`
WHERE post_type='post' 
AND post_status='publish'
ORDER BY ID DESC
スポンサーリンク

[memo]uuidv4生成クラス[メモ]

連日投稿でっす。
某Apiでuuidv4を推奨ってことで、uuidv4の生成クラスをメモっておきます。

class Uuid
{
    public static function v4() {
        return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
            // 32 bits for "time_low"
            mt_rand(0, 0xffff), mt_rand(0, 0xffff),

            // 16 bits for "time_mid"
            mt_rand(0, 0xffff),

            // 16 bits for "time_hi_and_version",
            // four most significant bits holds version number 4
            mt_rand(0, 0x0fff) | 0x4000,

            // 16 bits, 8 bits for "clk_seq_hi_res",
            // 8 bits for "clk_seq_low",
            // two most significant bits holds zero and one for variant DCE1.1
            mt_rand(0, 0x3fff) | 0x8000,

            // 48 bits for "node"
            mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
        );
    }
}

何気にこちらの記述のメソッドを500万回ループし重複しないか配列にいれて確認したところ。。
1.6秒くらいで実行がおわりました。
メモリ使用量は1.8G
結局重複はしなかったです。

他にも上記以外の書き方をしている方のコードで100万ループしてみましたが
53秒くらいかかり
メモリは100Mくらいだったと思います。
こちらも重複はしなかったです。
※500万やろうと思ったけど実行時間考えてもういいかなって思ってやらなかった。。

スポンサーリンク

[覚えない]mod_rewiteでGET,POSTデータを渡す[忘れがち]

久しぶりの投稿です。
何気に、mod_rewiteをたまに使う場合があって再度調べなおすの面倒なので・・・

以下のような感じで「QSA」を付ける
RewriteRule hoge/fuga /hoge/fuga.php [L,QSA]

スポンサーリンク

サイトヘルスステータス の致命的なエラー

自動更新をしないでFTPで更新するようにしているのに「致命的なエラー」と表示されるのが納得いかない・・・
webサーバーの実行ユーザに書き込み権限をそんなに与えたくないのに。

スポンサーリンク