つゆだくのSQLite
3
どういうのがSQLiteにあるのかわからないのでdate.cを読んだりして調べてみました。
sqlite> select datetime('now');
2006-07-17 16:13:50
sqlite> select time('now');
16:14:29
sqlite> select date('now');
2006-07-17
'now' を指定すると現在時刻が取れるが、便利なコマンドが用意されている。
sqlite> select current_timestamp; 2006-07-17 16:19:59 sqlite> select current_time; 16:21:37 sqlite> select current_date; 2006-07-17
しかし実際にはタイムゾーンの設定がまずいだけなのかどうなのかわからないけど、+9:00しないといけないことに気づく。なので、current_XXX は使わないで、以下の方法で対応。
sqlite> select datetime('now')
...> , datetime('now', 'localtime');
2006-07-17 16:54:36|2006-07-18 01:54:36
sqlite> select julianday('2000-01-01 00:00:00');
2451544.5
sqlite> select strftime('%Y-%m-%d %H:%M:%S','2000-01-01 12:34:56');
2000-01-01 12:34:56
正直juliandayを知らないのでwikipediaに聞いてみる。みてもどういう場合に便利なのかわからず。。
他にも色々できるようだ。まぁこの辺はアプリケーション側でやってしまえばよい気もするが。
sqlite> select datetime('2000-01-01 00:00:00', 'weekday 1');
2000-01-03 00:00:00
sqlite> select datetime('2000-01-01 00:00:00', '-1 year');
1999-01-01 00:00:00
sqlite> select datetime('2000-01-01 00:00:00', '+09:00:00');
2000-01-01 09:00:00
sqlite> select datetime(946684800,'unixepoch');
2000-01-01 00:00:00