質問: timezone から当日0時の値を求めたいです プログラムだと beggining_of_day とか mktime とかでできそうなのですが ここにある時間関数だけで 時刻以降を0にセットするというのが MySQL 関数だけでどう書けばいいのかわかりません ``` SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo') ``` でタイムゾーン時刻は取得できるので 1度文字列に変換して substring をとって 00:00:00 をくっつけてからまた文字列をパースする みたいなことをすればできなくはなさそうですが文字列を介すとなんとなく処理が重そうなので 1日分の秒数の MOD を取って引いたりとかでスマートにやる方法ってないでしょうか
回答: 処理が軽いかどうかはわからないのですが、次のような感じでできると思います。 ``` mysql> SELECT TIMESTAMP(DATE(CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo'))); +---------------------------------------------------------+ | TIMESTAMP(DATE(CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo'))) | +---------------------------------------------------------+ | 2020-08-10 00:00:00 | +---------------------------------------------------------+ 1 row in set (0.00 sec) ``` `DATE()` で一旦日付に変換してから `TIMESTAMP()` で日時に変換してます。