SQLite3における日付と時刻の関数のまとめ
import sqlite3
conn = sqlite3.connect('/tmp/sqlite.db')
cur = conn.cursor()
次は何をする?テーブルを作成します。SQLiteはテーブルの作成中にインデックスを作成することをサポートしていないので、まずテーブルを作成し、次にインデックスを作成するという2つのステップを踏まなければならないことに注意してください
id INTEGER PRIMARY KEY AUTOINCREMENT,
duration INTEGER,
event_date TEXT,
parameter TEXT );'''
create_index = 'CREATE INDEX IF NOT EXISTS idx_id ON test_table (id);'
cur.execute(create_table_stmt)
cur.execute(create_index)
conn.commit()
SQLiteは5つの基本的なデータ型のみをサポートしています。
The value is a NULL value
INTEGER. The value is a signed integer, stored in 1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value
REAL. The value is a floating point value, stored as an 8-byte IEEE floating point number
TEXT. The value is a text string, stored using the database encoding (UTF-8, UTF-16BE or UTF-16LE)
BLOB. The value is a blob of data, stored exactly as it was input
問題は、SQLite の時刻と日付の型はどこにあるのか、ということです。SQLite は以下のデータ型で時刻と日付を保存できることが判明しました。
TEXT as ISO8601 strings ('YYYY-MM-DD HH:MM:SS.SSS').
REAL as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.
insert_stmt = 'insert into test_table values (? , ? , , ?)'
record = (123, '2011-11-30 12:34:56', 'hello world')
cur.execute( insert_stmt, record )
conn.commit()
日付を文字列として保存した後、それを取り出して日付として使うことはできないので、SQLiteの日付関数を呼び出してから使う必要があります
例えば、前日に保存したデータを検索する場合。
SELECT
id,
duration,
event_date,
parameter
FROM test_table
WHERE
DATE(event_date) = DATE('now', '-1 day', 'localtime')
ORDER BY id, event_date
テーブル構造を見る select * from sqlite_master
テーブル情報を見る PRAGMA table_info (table_name)
SQLiteの時刻・日付関数
SQLiteには、以下のような時刻・日付関数があります。
datetime() ....................... Generate date and time
date() ........................... Generate the date
time() ........................... Generate the time
strftime() ....................... Format the date and time generated by the above three functions
datetime()の使い方は、datetime(date/time, modifier, modifier...)となります。
date()、time()の構文は、datetime()と同じです。
time/date関数の引数には、以下の形式の文字列が使用できます。
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
HH:MM
HH:MM:SS
now # where now is the time to generate the present.
例えば(このノートは2006年10月17日20:00から22:00(太平洋標準時)に書かれました)。
select datetime('now');
Result: 2006-10-17 12:55:54
select datetime('2006-10-17');
Result: 2006-10-17 12:00:00
select datetime('2006-10-17 00:20:00', '+1 hour', '-12 minute');
Result: 2006-10-17 01:08:00
select date('2006-10-17', '+1 day', '+1 year');
Result: 2007-10-18
select datetime('now', 'start of year');
Result: 2006-01-01 00:00:00
select datetime('now', 'start of month');
Result: 2006-10-01 00:00:00
select datetime('now', 'start of day');
Result: 2006-10-17 00:00:00
# Despite adding 10 hours to the 2nd parameter, the time is zeroed to 00:00:00 by the 3rd parameter start of day
# The subsequent 4th argument adds 10 hours to 00:00:00 to make it 10:00:00.
select datetime('now', '+10 hour', 'start of day', '+10 hour');
Result: 2006-10-17 10:00:00
# Convert the Greenwich time zone to the local time zone.
select datetime('now', 'localtime');
Result: 2006-10-17 21:21:47
select datetime('now', '+8 hour');
Result: 2006-10-17 21:24:45
strftime()関数は、YYYY-MM-DD HH:MM:SS 形式の日付文字列を他の形式の文字列に変換します。
strftime()のシンタックスは strftime(format, date/time, modifier, modifier, ...) です。
以下の表記で日付と時刻をフォーマットすることができます。
d月、01-31
f 秒単位の端数処理、SS。
H時、00-23
j 特定の日が1年のうち何日目かを調べる、001-366
m 月、00-12
%M 分、00-59
%s 1970年1月1日から現在までの秒数
S秒、00-59
w 週、0-6 (0は日曜日)
W ある日が属する週(01-53)を検索します。
YY年、YYYY
%% パーセント記号
strftime()の使用例は次のとおりです。
select strftime('%Y/%m/%d %H:%M:%S', 'now', 'localtime');
結果:2006/10/17 21:41:09
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python の sqlalchemy テーブル作成例 詳細
-
SQLite3のバインディング関数ファミリーの使い方とその注意点解説
-
SQLiteパフォーマンス最適化例共有
-
SQLiteのWAL機構を詳しく紹介
-
SQLite3の自己追加型主キーに関連する知識のまとめ
-
SQLite3 用に ANSI から UTF8 への交換関数を提供する。
-
SQLiteデータベースの共通文とMACでのSQLite用可視化ツール「MeasSQLlite」の利用について
-
SQLiteチュートリアル(6)。式の説明
-
SQLiteチュートリアル(I)。SQLiteデータベース入門
-
Sqliteデータベースの最大挿入データ数は500個です。