MariaDBには、さまざまな形式で時刻と日時の値を返すことができる多くの関数が含まれています。
2つの関数を使用すると、12時間制を使用して時間部分をフォーマットできます。AM/PM指定子はDATE_FORMAT()です。 およびTIME_FORMAT() 。
これらの関数で使用できる形式指定子は多数ありますが、AM/PM指定子を返すのは2つだけです。
%r フォーマット指定子
%r format指定子は、時刻を12時間形式でフォーマットするために使用され、その後にAM/PM指定子が続きます。
例:
SELECT DATE_FORMAT('2030-03-10 18:10:37', '%r'); 結果:
+------------------------------------------+
| DATE_FORMAT('2030-03-10 18:10:37', '%r') |
+------------------------------------------+
| 06:10:37 PM |
+------------------------------------------+
結果の時間は、次のフォーマット文字列を使用してフォーマットされたかのように表示されます。'%I:%i:%S %p' 。
明らかに、AMを返すかどうか またはPM 実際の時間によって異なります。 12:00:00より前の時間 AMを返します その後、PMを返します。 。
12:00:00の前に来る時間を変更するとどうなりますか。 :
SELECT DATE_FORMAT('2030-03-10 06:10:37', '%r'); 結果:
+------------------------------------------+
| DATE_FORMAT('2030-03-10 06:10:37', '%r') |
+------------------------------------------+
| 06:10:37 AM |
+------------------------------------------+
両方のDATE_FORMAT() およびTIME_FORMAT() %rを受け入れる フォーマット指定子。TIME_FORMAT()で同じフォーマット指定子を使用できます。 機能:
SELECT TIME_FORMAT('06:10:37', '%r'); 結果:
+-------------------------------+
| TIME_FORMAT('06:10:37', '%r') |
+-------------------------------+
| 06:10:37 AM |
+-------------------------------+
TIME_FORMAT() DATE_FORMAT()に対して、日時値だけでなく時刻値も受け入れます。 日付と日時の値のみを受け入れます。ただし、TIME_FORMAT() 時間分秒のフォーマット指定子のみを受け入れます。 %rとして表示 時間、分、秒を返します。これも受け入れられます。
%p フォーマット指定子
%p 形式指定子は、AM/PM指定子を表すためだけに使用されるより具体的な形式指定子です。通常、カスタム形式で時刻を返すために他の形式指定子と組み合わせて使用されます。
前述のように、%r format指定子は、次のフォーマット文字列を使用してフォーマットされたかのように時刻をフォーマットします。'%I:%i:%S %p' 。
その文字列を明示的に使用しましょう:
SELECT TIME_FORMAT('18:10:37', '%I:%i:%S %p'); 結果:
+----------------------------------------+
| TIME_FORMAT('18:10:37', '%I:%i:%S %p') |
+----------------------------------------+
| 06:10:37 PM |
+----------------------------------------+
したがって、%rを使用した場合と同じ結果が得られます。 フォーマット指定子。
ただし、このメソッドを使用する利点の1つは、独自のカスタム方法で出力を作成できることです。
例:
SELECT TIME_FORMAT('18:10:37', '%l:%i %p'); 結果:
+-------------------------------------+
| TIME_FORMAT('18:10:37', '%l:%i %p') |
+-------------------------------------+
| 6:10 PM |
+-------------------------------------+
ここでは、%lを使用しました 先行ゼロなしで時間部分を返します。時間の秒部分も省略しました。
これらの関数で使用できるフォーマット指定子の完全なリストについては、MariaDBフォーマット文字列を参照してください。