概要 :このチュートリアルでは、SQLiteの日付と時刻の値を操作し、組み込みの日付と時刻関数を使用して日付と時刻の値を処理する方法を示します。
SQLiteは、組み込みの日付や時刻のストレージクラスをサポートしていません。代わりに、いくつかの組み込みの日付と時刻の関数を利用して、TEXT
などの他のストレージクラスを使用します。 、REAL
、またはINTEGER
日付と時刻の値を保存します。
TEXT
の使用 SQLiteの日付と時刻を保存するためのストレージクラス
TEXT
を使用する場合 日付と時刻の値を格納するストレージクラスの場合、次のようにISO8601文字列形式を使用する必要があります。
YYYY-MM-DD HH:MM:SS.SSS
Code language: SQL (Structured Query Language) (sql)
例:2016-01-01 10:20:05.123
まず、datetime_text
という名前の新しいテーブルを作成します デモンストレーション用。
CREATE TABLE datetime_text(
d1 text,
d2 text
);
Code language: SQL (Structured Query Language) (sql)
試してみてください
このテーブルには、2つの列d1
が含まれています およびd2
TEXT
を使用 データ型。
日付と時刻の値をdatetime_text
に挿入するには テーブルでは、DATETIME
を使用します 機能。
たとえば、現在のUTC日付と時刻の値を取得するには、次のように、現在のリテラル文字列を関数に渡します。
SELECT datetime('now');
Code language: SQL (Structured Query Language) (sql)
試してみてください
現地時間を取得するには、追加の引数localtime
を渡します。 。
SELECT datetime('now','localtime');
Code language: SQL (Structured Query Language) (sql)
試してみてください
次に、日付と時刻の値をdatetime_text
に挿入します 次のような表:
INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));
Code language: SQL (Structured Query Language) (sql)
試してみてください
3番目に、datetime_text
からデータをクエリします テーブル。
SELECT
d1,
typeof(d1),
d2,
typeof(d2)
FROM
datetime_text;
Code language: SQL (Structured Query Language) (sql)
試してみてください
REAL
の使用 SQLiteの日付と時刻の値を格納するストレージクラス
REAL
を使用できます 日付や時刻の値をユリウス日数として保存するストレージクラス。これは、紀元前4714年11月24日のグリニッジの正午からの日数です。先発グレゴリオ暦に基づいています。
REALストレージクラスを使用して日付と時刻の値を格納する例を見てみましょう。
まず、datetime_real
という名前の新しいテーブルを作成します 。
CREATE TABLE datetime_real(
d1 real
);
Code language: SQL (Structured Query Language) (sql)
試してみてください
次に、「現在の」日付と時刻の値をdatetime_real
に挿入します テーブル。
INSERT INTO datetime_real (d1)
VALUES(julianday('now'));
Code language: SQL (Structured Query Language) (sql)
試してみてください
julianday()
を使用しました 現在の日付と時刻をユリウス日に変換する関数。
3番目に、datetime_real
からデータをクエリします テーブル。
SELECT d1 FROM datetime_real;
Code language: SQL (Structured Query Language) (sql)
試してみてください
出力は人間が読める形式ではありません。
幸い、組み込みのdate()
を使用できます およびtime()
次のように日付と時刻の値をフォーマットする関数:
SELECT
date(d1),
time(d1)
FROM
datetime_real;
Code language: SQL (Structured Query Language) (sql)
試してみてください
INTEGER
の使用 SQLiteの日付と時刻の値を保存するには
TEXT
の他に およびREAL
ストレージクラスでは、INTEGER
を使用できます 日付と時刻の値を格納するストレージクラス。
通常、INTEGER
を使用します 1970-01-01 00:00:00 UTC
からの秒数であるUNIX時間を保存します 。次の例を参照してください:
まず、データ型がINTEGER
の列が1つあるテーブルを作成します。 日付と時刻の値を保存します。
CREATE TABLE datetime_int (d1 int);
Code language: SQL (Structured Query Language) (sql)
試してみてください
次に、現在の日付と時刻の値をdatetime_int
に挿入します テーブル。
INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));
Code language: SQL (Structured Query Language) (sql)
試してみてください
3番目に、datetime_int
からデータをクエリします テーブル。
SELECT d1 FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
試してみてください
整数です。
結果をフォーマットするには、組み込みのdatetime()
を使用できます。 次のように機能します:
SELECT datetime(d1,'unixepoch')
FROM datetime_int;
Code language: SQL (Structured Query Language) (sql)
試してみてください
SQLiteを使用すると、任意のデータ型を自由に選択して日付と時刻の値を格納し、組み込みの日付と時刻関数を使用して形式を変換できます。
SQLiteの日付と時刻の関数の詳細については、組み込みの日付と時刻の関数を確認してください。
このチュートリアルでは、TEXT
の使用方法を学習しました。 、REAL
、およびINTEGER
日付と時刻の値を格納するストレージクラス。さらに、組み込みの日付と時刻関数を使用して、保存されている日付と時刻の値を読み取り可能な形式に変換する方法を学習しました。