SQLiteは、日付と時刻を操作するための5つの関数をサポートしています。これらは次のとおりです。
-
date()
-
time()
-
datetime()
-
julianday()
-
strftime()
これらの関数はすべて、引数として時間文字列を受け入れます。また、出力を変更/フォーマットするための他の引数も受け入れます。
strftime()
関数は、5つの中で最も用途の広い関数です。実際、この関数は他の4つが実行できるすべてのことを実行できます。
つまり、strftime()
を使用できます。 すべての日付と時刻のフォーマット要件に対応します。他の4つの機能は、便宜上のみ使用できます。
構文
各関数の構文は次のとおりです。
date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)
最初の4つの関数では、最初の引数は時間文字列であり、後続の引数はすべて修飾子です。
strftime()
内 関数最初の引数はフォーマット文字列で、その後に時間文字列と修飾子が続きます。
すべての有効な時間文字列と修飾子は、この記事の下部にリストされています。
ただし、最初に、これらの各関数の簡単な例をいくつか見てみましょう。
date()関数
date()
を使用できます 1つの引数または複数の引数で機能します。
引数が1つしかない例を次に示します。
SELECT date('now');
結果:
2020-04-23
修飾子を使用する例を次に示します。
SELECT date('now', 'localtime');
結果:
2020-04-24
この場合、localtime
を使用しました 修飾子。この修飾子は、時間文字列が協定世界時(UTC)であると想定し、現地時間を表示するように時間文字列を調整します。
time()関数
time()
関数はdate()
に似ています 日付の代わりに時刻を出力することを除いて、関数。
次に例を示します:
SELECT time('now');
結果:
00:02:05
そしてここにlocaltime
があります 修飾子:
SELECT time('now', 'localtime');
結果:
10:02:09
datetime()関数
SQLite datetime()
関数は、日付と時刻の両方を出力するという意味で、前の2つの関数を組み合わせたものです。
次に例を示します:
SELECT datetime('now');
結果:
"2020-04-24 00:04:13"
そしてここにlocaltime
があります 修飾子:
SELECT datetime('now', 'localtime');
結果:
"2020-04-24 10:04:46"
julianday()関数
julianday()
関数は、ユリウス暦の開始からの連続日数を返します。これは、紀元前4713年1月1日月曜日、先発ユリウス暦(紀元前4714年11月24日、先発グレゴリオ暦)です。
now
を使用すると次のようになります タイムストリングとして:
SELECT julianday('now');
結果:
2458963.50964815
そしてここではlocaltime
を使用しています 修飾子:
SELECT julianday('now', 'localtime');
結果:
2458963.92637685
strftime()関数
前述のように、strftime()
関数を使用して、前の関数で使用可能な任意の形式で日付と時刻の値を出力できます。
この関数を使用すると、日付/時刻の値のフォーマット方法を非常に具体的に指定できます。表示したい正確な形式を提供できます。
この関数の構文は次のようになります:
strftime(format, timestring, modifier, modifier, ...)
最初の引数がformat
であることに注意してください 。ここで、時間文字列を出力する形式を指定します。
strftime()
のフォーマット文字列 次の置換のいずれかで構成できます:
%d | 曜日:00 |
%f | フラクショナル秒:SS.SSS |
%H | 時間:00-24 |
%j | 年の日:001-366 |
%J | ユリウス日番号 |
%m | 月:01-12 |
%M | 分:00-59 |
%s | 1970-01-01からの秒数 |
%S | 秒:00-59 |
%w | 曜日0-6、日曜日==0 |
%W | 年の週:00-53 |
%Y | 年:0000-9999 |
%% | % |
次に例を示します:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
結果:
"2020-04-24 00:43:51"
この場合、datetime()
を使用した場合と同じ結果が得られます。 機能。
これがlocaltime
です。 修飾子:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime');
結果:
"2020-04-24 10:45:27"
繰り返しますが、datetime()
の場合と同じ結果になります 。違いは、strftime()
出力の形式を明示的に指定できます。
例:
SELECT strftime('%d/%m/%Y %H:%M:%S', 'now', 'localtime');
SELECT strftime('%m/%d/%Y (%H:%M:%S)', 'now', 'localtime');
SELECT strftime('%H:%M:%S on %d/%m/%Y', 'now', 'localtime');
結果:
"24/04/2020 10:49:41" "04/24/2020 (10:52:24)" "10:51:13 on 24/04/2020"
有効な時間文字列形式
すべての日付/時刻関数の時間文字列引数は、次のいずれかの形式で指定できます。
- YYYY-MM-DD
- YYYY-MM-DD HH:MM
- YYYY-MM-DD HH:MM:SS
- YYYY-MM-DD HH:MM:SS.SSS
- YYYY-MM-DDTHH:MM
- YYYY-MM-DDTHH:MM:SS
- YYYY-MM-DDTHH:MM:SS.SSS
- HH:MM
- HH:MM:SS
- HH:MM:SS.SSS
- 今
- DDDDDDDDDD
有効な修飾子
日付/時刻関数では、次の修飾子のいずれかを使用できます。
- NNN日
- NNN時間
- NNN分
- NNN.NNNN秒
- NNNか月
- NNN年
- 月の初め
- 年の初め
- 一日の始まり
- 平日N
- unixepoch
- 現地時間
- utc
N
指定された単位に基づいて、日付に追加される数値を指します。
例:
SELECT
date('now'),
date('now', '3 days');
結果:
date('now') date('now', '3 days') ----------- --------------------- 2020-04-24 2020-04-27
これはstart of month
を使用するものです 修飾子として:
SELECT
date('now'),
date('now', 'start of month');
結果:
date('now') date('now', 'start of month') ----------- ----------------------------- 2020-04-24 2020-04-01