問題:
SQLiteで日時の列または値をフォーマットしたい。
例:
私たちのデータベースには、ticket
列passenger_ID
にデータがあります 、train_number
、およびsale_datetime
。
passenger_ID | train_number | sale_datetime |
---|---|---|
245NX | 4505 | 2019-10-17 12:56:30 |
127RG | 3403 | 2019-10-17 11:45:23 |
567FH | 4505 | 2019-10-18 12:40:32 |
230AP | 6700 | 2019-10-18 13:20:20 |
118BB | 3403 | 2019-10-18 13:13:13 |
チケットの販売ごとに、乗客ID、列車番号、販売日時を取得しましょう。販売日をスラッシュ(/)で区切って、年と時刻の間にコンマを入れて、日、月、年を表示するようにフォーマットします。セールの時間と分だけが必要です。
作成するクエリは次のとおりです。
解決策:
SELECT passenger_ID, train_number, STRFTIME('%d/%m/%Y, %H:%M', sale_datetime) AS sale_formatted_datetime FROM ticket;
クエリの結果は次のとおりです。
passenger_ID | train_number | sale_formatted_datetime |
---|---|---|
245NX | 4505 | 2019年10月17日、12:56 |
127RG | 3403 | 2019年10月17日、11:45 |
567FH | 4505 | 2019年10月18日、12:40 |
230AP | 6700 | 2019年10月18日、13:20 |
118BB | 3403 | 2019年10月18日、13:13 |
ディスカッション:
STRFTIME()
を使用します SQLiteでdate\time\datetimeデータをフォーマットする関数。この関数は2つの引数を取ります。最初の引数は、日付/時刻のパーツパターンを含むフォーマット文字列です。この例では、フォーマット文字列‘%d /%m /%Y、%H:%Mを使用します。 '。この文字列の内容:
- %d 2桁の日です。
- %m 2桁の月です。
- %Y は4桁の年です。
- %H 2桁の時間です。
- %M 2桁の分です。
SQLiteのドキュメントでより多くの日付と時刻の指定子を見つけることができます。
2番目の引数は、フォーマットする時刻/日付/日時の値です。これは、時刻/日付/日時の値または時刻/日付/日時列の名前を返す式にすることができます。 (この例では、sale_datetime
列です。 。)
STRFTIME()
フォーマットされた日付と時刻を返します。この例では、フォーマットされた日付と時刻に秒が含まれておらず、日付の部分はダッシュ(-)ではなくスラッシュ(/)で区切られています。