SQLiteには、明確な時間型というのがありません。
かわりに、文字列やユリウス暦、UNIX時間を数値化できる各種関数をもってサポートしています。
SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:
実際のところ
今の日付・時間
時間はtime関数、日付はdate関数、全部ほしければdatetime関数です
SELECT time('now'); /* 12:04:12 */ SELECT date('now'); /* 2016-09-14 */ SELECT datetime('now'); /* 2016-09-14 12:06:03 */
UNIX時間で欲しい場合はstrftime関数です。
記法はよくあるprintf系
SELECT strftime('%s', "2016-09-08");
テーブルの作成
上記の通り、決まったデータ型はないので遣りやすい方法でやればいいでしょう。
私は楽したいのでTEXT型。
CREATE TABLE blog(body TEXT, date TEXT);
データの挿入
現在の日付を入れたいだけなら、date('now')で入る親切設計。
……INTEGER形式で入れる場合はstrftime('%s', 'now')でコンバートしてから
INSERT INTO blog VALUES ("my first blog post.", date('now'));
日付の指定も出来ます。
……間違って「最初の投稿」が二個になっちゃいましたね。
これは後でフォローします。
INSERT INTO blog VALUES ("my first blog post.", date("2016-09-16")); INSERT INTO blog VALUES ("my second blog post.", date("2016-09-16"));
検索
検索するにはWHERE節で。
私は楽したいので文字列でやってます。
高速にやりたい人はUNIX時間とかでも良いでしょう。
SELECT body FROM blog WHERE date(date) = '2016-09-16'; /* my first blog post. my second blog post. */
削除
先ほど二個作ってしまった"最初の投稿"を消しましょう
DELETE FROM blog WHERE date(date) = '2016-09-16' AND body = 'my first blog post.'; SELECT * FROM blog; /* my first blog post.|2016-09-14 my second blog post.|2016-09-16 */