SQLiteにはdate()
があります 時間文字列と修飾子に基づいて日付値を返すことができる関数。
日付を次の形式で返します:YYYY-MM-DD
この関数を使用するには、時間文字列に加えて、任意の(オプションの)修飾子を指定する必要があります。モディファイアを使用すると、日数を追加したり、現地時間に設定したりするなど、日付を変更できます。
構文
date()
の構文 関数は次のようになります:
date(timestring, modifier, modifier, ...)
timestring
引数は有効な時間文字列である必要があります。
modifier
引数はオプションです。 1つ以上の修飾子を指定できます。修飾子を指定する場合は、有効な修飾子である必要があります。
例
date()
を示す例を次に示します。 1つの引数で使用されている関数。
SELECT date('now');
結果:
2020-04-27
now
時間文字列は現在の日付と時刻に変換されます。 date()
を使用している場合 関数の場合、日付のみが返されます。
修飾子を追加する
修飾子を使用して、前の結果を変更できます。これが例です。
SELECT date('now', '+6 months');
結果:
2020-10-27
この場合、日付に6か月を追加しました。
複数の修飾子
前述のように、1つ以上の修飾子を追加できます。前の例に別の修飾子を追加する例を次に示します。
SELECT date('now', '+6 months', 'localtime');
結果:
2020-10-28
私の場合、localtime
修飾子により、日付に1日が追加されました。
これを行う理由は、localtime
修飾子は、提供された時間文字列が協定世界時(UTC)であることを前提としています。次に、現地時間を表示するように時間文字列を調整します。
したがって、現地時間によっては異なる結果が得られる場合があります。
時間文字列としての文字列リテラル
上記の例では、now
を使用しています 時間文字列として使用できますが、任意の有効な時間文字列を指定できます。
他の例をいくつか示します。
SELECT date('2020-04-27 23:58:57');
結果:
2020-04-27
この場合、日付から時間部分を削除するだけです。
ここでも、いくつかの修飾子があります。
SELECT date('2020-04-27 23:58:57', 'start of year', '+6 months');
結果:
2020-07-01
この場合、指定された日付の年の初めから6か月の日付を取得したかったのです。
ユリウス日を時間文字列として使用する例を次に示します。
SELECT date('2458967.49737293');
結果:
2020-04-27
date()とstrftime()
date()
関数は、strftime('%Y-%m-%d', ...)
とまったく同じ結果を返します。 戻り値。 date()
関数はそれを行うためのより便利な方法です。
SELECT
date('now'),
strftime('%Y-%m-%d', 'now');
結果:
date('now') strftime('%Y-%m-%d', 'now') ----------- --------------------------- 2020-04-28 2020-04-28
日付範囲
すべてのSQLite日付および時刻関数と同様に、date()
0000-01-0100:00:00から9999-12-3123:59:59(ユリウス日番号1721059.5から5373484.5)の間の日付でのみ機能します。
その範囲外の日付の場合、結果は未定義です。