SUBSTR関数とMOD関数で24時間表記を12時間表記に変換する

2024-04-02

SQLiteで24時間表記の文字列を12時間表記の文字列にフォーマットする方法

例:

SELECT STRFTIME('%H:%M %p', '2024-04-01 13:23:45');

この例では、24時間表記の文字列 '2024-04-01 13:23:45' を12時間表記の文字列 '01:23 PM' にフォーマットしています。

フォーマット文字列:

STRFTIME() 関数のフォーマット文字列は以下の通りです。

  • %H: 時 (24時間表記)
  • %M: 分
  • %p: 午前/午後 (AM/PM)
  • 12時間表記の文字列と午前/午後の区別を表示する
SELECT STRFTIME('%I:%M %p', '2024-04-01 13:23:45');

出力例: 01:23 PM

SELECT STRFTIME('%I:%M', '2024-04-01 13:23:45');

注意事項:

  • SQLiteのバージョンによっては、STRFTIME() 関数の機能が異なる場合があります。詳細はSQLiteのドキュメントを参照してください。
  • フォーマット文字列は、使用するデータベースやロケールによって異なる場合があります。

補足:

  • 上記の例では、STRFTIME() 関数を使用して、24時間表記の文字列を12時間表記の文字列にフォーマットする方法を紹介しました。
  • その他にも、strftime() 関数を使用して、日付や時刻をさまざまな形式でフォーマットすることができます。
  • 詳細については、SQLiteのドキュメントやC++の標準ライブラリのドキュメントを参照してください。
  • この情報は参考用であり、予告なく変更される場合があります。
  • この情報を使用した結果生じたいかなる損害についても責任を負いません。



-- 24時間表記の文字列を12時間表記の文字列にフォーマットする

SELECT STRFTIME('%H:%M %p', '2024-04-01 13:23:45'); -- 出力: 01:23 PM
SELECT STRFTIME('%I:%M %p', '2024-04-01 01:23:45'); -- 出力: 01:23 AM

-- 12時間表記の文字列と午前/午後の区別を表示する

SELECT STRFTIME('%I:%M %p', '2024-04-01 13:23:45'); -- 出力: 01:23 PM

-- 12時間表記の文字列のみを表示する

SELECT STRFTIME('%I:%M', '2024-04-01 13:23:45'); -- 出力: 01:23
  • 最初の例では、STRFTIME('%H:%M %p', '2024-04-01 13:23:45') を使用して、24時間表記の文字列 '2024-04-01 13:23:45' を12時間表記の文字列 '01:23 PM' にフォーマットしています。

実行方法:

  • 上記のサンプルコードをSQLiteデータベースで実行します。
  • 結果を確認します。



24時間表記を12時間表記に変換する他の方法

CASE式

SELECT CASE WHEN hour >= 12 THEN hour - 12
         ELSE hour
         END || ':' || minute ||
         CASE WHEN hour >= 12 THEN ' PM'
         ELSE ' AM'
         END
FROM your_table;
  • 上記のクエリは、CASE 式を使用して、24時間表記の時間を12時間表記に変換します。
  • 最初の CASE 式は、時間 (hour) が12より大きい場合は12を引いて、12より小さい場合はそのままの値を返します。
  • 結果は、hourminuteAM/PM を結合して表示されます。

SUBSTR関数とMOD関数

SELECT SUBSTR(time, 1, 2) || ':' || SUBSTR(time, 4, 2) ||
       CASE WHEN MOD(hour, 12) = 0 THEN ' PM'
       ELSE ' AM'
       END
FROM your_table;

説明:

  • SUBSTR(time, 1, 2) は、時間文字列 (time) の最初の2文字 (時) を抽出します。
  • MOD(hour, 12) は、時間を12で割った余りを計算します。
  • 余りが0の場合は "PM" を、それ以外の場合は "AM" を返します。

strftime関数

SELECT strftime('%I:%M %p', time)
FROM your_table;
  • %I は、12時間表記の時間を表します。
  • %M は、分を表します。
  • 上記の方法は、SQLiteのバージョンやロケールによって異なる場合があります。詳細はSQLiteのドキュメントを参照してください。

sqlite


【超解説】SQLite3型アフィニティの仕組みと活用法:パフォーマンスと整合性を高める秘訣を大公開!

SQLite 3 型アフィニティは、データベース内の列に格納されるデータの型を制御する仕組みです。各データ型にはデフォルトのアフィニティが割り当てられていますが、開発者はこれを明示的に変更することができます。型アフィニティを変更することで、データの比較、操作、インデックス付けのパフォーマンスを向上させることができます。...


JavaScript と SQLite でタイムスタンプを自在に操る:Chrome 拡張機能の活用術

SQLiteデータベースと Google Chrome 拡張機能でタイムスタンプを扱う場合、その形式を理解することが重要です。この記事では、それぞれのタイムスタンプ形式と、それらを相互に変換する方法を詳しく説明します。Chrome のタイムスタンプ形式...


NoSQLデータベースの可能性:SQLiteの列数制限に縛られないデータ管理

公式ドキュメント:SQLiteの公式ドキュメントによると、テーブルの最大列数は2^31-1(約21億4748万3647)です。これは、SQLITE_MAX_COLUMN マクロで定義されています。https://www. sqlitetutorial...