SQLite クラシック チュ...login
SQLite クラシック チュートリアル
著者:php.cn  更新時間:2022-04-13 17:05:02

SQLite の日付と時刻


SQLite は次の 5 つの日付と時刻関数をサポートしています:

シリアル番号関数インスタンス
1date(timestring, modifier, modifier, ...) in YYYY- MM -DD 形式で日付を返します。
2time(timestring, modifier, modifier, ...) 時刻を HH:MM:SS 形式で返します。
3datetime(timestring, modifier, modifier, ...) は YYYY-MM-DD HH:MM:SS 形式で返されます。
4julianday(timestring, modifier, modifier, ...)これは、グリニッジ標準時紀元前 4714 年 11 月 24 日の正午からの日数を返します。
5strftime(format, timestring, modifier, modifier, ...)これは、最初のパラメータで指定された書式文字列に基づいて書式設定された日付を返します。具体的なフォーマットについては以下で説明します。

上記の 5 つの日付と時刻の関数は、パラメータとして時刻文字列を受け取ります。時間文字列の後に 0 個以上の修飾子修飾子が続きます。 strftime() 関数は、最初の引数としてフォーマット文字列 format を取ることもできます。さまざまなタイプの時間文字列と修飾子については、以下で詳しく説明します。

時刻文字列

時刻文字列は次のいずれかの形式です:

T2010-12-30 12:10
シリアル番号時刻文字列
1YYYY-MM-DD2010-1 2 - 30
2YYYY-MM-DD HH:MM:SS.SSS2010- 12-30 12:10:04.100
4MM-DD-YYYY HH:MM3 0 -2010-12-12:10
5HH:MM12:10
6YYYY-MM-DDHH:MM
7HH:MM:SS12:10:01
8YYYYMMDD HHMMSS20101230 121001
9現在2013-05-07

日付と時刻を区切るリテラル文字として「T」を使用できます。

修飾子

時刻文字列の後には 0 個以上の修飾子を続けることができ、上記の 5 つの関数によって返される日付や時刻を変更します。上記の 5 つの関数はいずれも時間を返します。修飾子は左から右の順に使用する必要があります。SQLite で使用できる修飾子は以下のとおりです:

  • NNN日

  • NNN時間

  • NNN分

  • NNN.NNNN秒

  • NNN ヶ月

  • NNN 年

  • 月の始まり

  • 年の始まり

  • 一日の始まり

  • 平日 N

  • unixepoch

  • 現地時間

  • utc

フォーマット

SQLite は、任意の日付と時刻をフォーマットするための非常に便利な関数 strftime() を提供します。次の置換を使用して、日付と時刻の書式を設定できます:

replacementdescription
%d日、01-31
%f、小数秒付き、SS。 SSS
%H時間、00-23
%j曜日、001-366
%Jジュリアン日数、DDDD.DDDD
%m月、00-12
%M分、00-59
%s1970-01-01からの秒数
%SSe条件、00-59
%w曜日、0-6 (0は日曜日)
%W曜日、01-53
%Y年、YYYY
%%% シンボル

インスタンス

次に、SQLite プロンプトを使用してさまざまなインスタンスを試してみましょう。現在の日付を計算する方法は次のとおりです:


sqlite> SELECT date('now');
2013-05-07

現在の月の最終日を計算する方法は次のとおりです:

sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31

UNIX タイムスタンプ 1092941466 から日付と時刻を計算する方法は次のとおりです:

sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06

計算方法は次のとおりです指定された UNIX タイムスタンプ 1092941466 ローカル タイム ゾーンを基準とした日付と時刻:

sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 11:51:06

現在の UNIX タイムスタンプを計算する方法は次のとおりです:

sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
1367926057

米国独立宣言の署名からの日数は次のとおりです:

sqlite> SELECT julianday('now') - julianday('1776-07-04');
86504.4775830326

方法は次のとおりです2004 年の特定の瞬間から何日も経過しました。 秒数:

sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572

以下は、今年の 10 月の最初の火曜日の日付を計算します:

sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01

以下は、その年の 10 月の最初の火曜日の日付を計算します。 UNIX エポック (strftime('%s','now ') と似ていますが、小数部分が含まれる点が異なります):

sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598

UTC と現地時間の値の間で変換します。日付をフォーマットする場合は、utc または localtime 修飾子を使用します。以下に示すように:

sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite>  SELECT time('12:00', 'utc');
19:00:00