sql >> データベース >  >> RDS >> SQLite

Strftime()関数がSQLiteでどのように機能するか

    SQLite strftime() 関数を使用すると、指定した形式で日付と時刻の値を返すことができます。

    返される実際の日付/時刻の値は、関数を呼び出すときに引数として指定する時間文字列と、(オプションの引数として)含める修飾子に基づいています。モディファイアを使用すると、日付を変更できます。たとえば、日数を追加したり、現地時間に設定したりできます。

    構文

    構文は次のようになります:

    strftime(format, timestring, modifier, modifier, ...)

    format 引数は、strftime()の有効な形式の文字列置換の任意の組み合わせにすることができます 機能。

    timestring 引数は有効な時間文字列である必要があります。

    modifier 引数はオプションです。 1つ以上の修飾子を指定できます。修飾子を指定する場合は、有効な修飾子である必要があります。

    実例を示します。

    SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');

    結果:

    2020-04-29 01:29:54

    now 時間文字列は、提供された形式文字列に基づいて、現在の日付と時刻に変換されます。

    この場合、私のフォーマット文字列は、datetime('now')とまったく同じ結果を返します。 戻ってきたでしょう。

    修飾子を追加する

    修飾子を使用して、前の結果を変更できます。これが例です。

    SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');

    結果:

    2020-04-29 03:31:50

    この場合、時間に2時間を追加しました。

    複数の修飾子

    複数の修飾子を追加できます。前の例に別の修飾子を追加する例を次に示します。

    SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');

    結果:

    2020-04-29 13:33:22

    私の場合、localtime 修飾子により、時間が前に進みました。

    これは、localtime 修飾子は、提供された時間文字列が協定世界時(UTC)であることを前提としています。次に、現地時間を表示するように時間文字列を調整します。

    現地時間によっては、異なる結果が得られる場合があります。

    ここでも、元の現地時間を変更された結果と比較しています:

    SELECT 
      strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
      strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";

    結果:

    Local                Modified           
    -------------------  -------------------
    2020-04-29 11:34:57  2020-04-29 13:34:57

    Unix/Epoch時間

    %sを使用できます エポック時間を計算するためのフォーマット文字列(小文字)。

    SELECT strftime('%s', 'now');

    結果:

    1588124826

    エポック時間(エポック時間、POSIX時間、エポックからの秒数、またはUNIXエポック時間とも呼ばれます)は、1970-01-01からの秒数です。

    Unix時間は、オペレーティングシステムやファイル形式で広く使用されています。

    ユリウス日

    %Jを使用できます ユリウス日を返すために。

    ユリウス日は、紀元前4714年11月24日のグリニッジの正午からの日数です。 (先発グレゴリオ暦を使用)。

    先発ユリウス暦を使用している場合、これは紀元前4713年1月1日月曜日です。

    ユリウス日は通常、天文学者やソフトウェアなどが2つのイベント間の経過日数を計算するために使用します。

    strftime()を使用してユリウス日を返す方法は次のとおりです。 機能。

    SELECT strftime('%J', 'now');

    結果:

    2458968.575441667               

    SQLiteでこれを行う別の方法は、julianday()を使用することです。 機能。

    日付範囲

    すべてのSQLite日付および時刻関数と同様に、strftime() 0000-01-0100:00:00から9999-12-3123:59:59(ユリウス日番号1721059.5から5373484.5)の間の日付でのみ機能します。

    その範囲外の日付の場合、結果は未定義です。


    1. Oracle DB Server + APEX + ORDS + JasperReportsをゼロから(パート4)

    2. .netコードからストアドプロシージャにテーブル値パラメータを渡す方法

    3. PostgreSQLでSSLを有効にする方法

    4. PostgreSQL:6つのそれほど簡単ではない部分