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

SQLiteでのDate()関数のしくみ

    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)の間の日付でのみ機能します。

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


    1. SQLiteでReplace()がどのように機能するか

    2. MariaDBに存在しない場合にのみテーブルを作成する

    3. @@ DATEFIRST –SQLServerで週の最初の日を取得する

    4. Railsで、{adapter => postgresqlのデータベースを作成できませんでした、