概要 :このチュートリアルでは、SQLiteの日付と時刻の値を操作し、組み込みの日付と時刻関数を使用して日付と時刻の値を処理する方法を示します。
SQLiteは、組み込みの日付や時刻のストレージクラスをサポートしていません。代わりに、いくつかの組み込みの日付と時刻の関数を利用して、TEXTなどの他のストレージクラスを使用します。 、REAL 、またはINTEGER 日付と時刻の値を保存します。
TEXTの使用 SQLiteの日付と時刻を保存するためのストレージクラス
TEXTを使用する場合 日付と時刻の値を格納するストレージクラスの場合、次のようにISO8601文字列形式を使用する必要があります。
YYYY-MM-DD HH:MM:SS.SSSCode 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 日付と時刻の値を格納するストレージクラス。さらに、組み込みの日付と時刻関数を使用して、保存されている日付と時刻の値を読み取り可能な形式に変換する方法を学習しました。