Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So formatieren Sie Datum und Uhrzeit in MySQL

In MySQL das DATE_FORMAT() Mit der Funktion können Sie das Datum und die Uhrzeit formatieren.

Hier ist ein Beispiel:

SELECT DATE_FORMAT('2018-12-01', '%W, %d %M %Y');

Ergebnis:

Saturday, 01 December 2018

In diesem Beispiel %W steht für den Namen des Wochentags, %d steht für den Tag des Monats, %M steht für Monat und %Y steht für Jahr. Es sind viele weitere Formatbezeichner verfügbar, mit denen Sie ein genaues Format für Datumsangaben sowie die Zeitkomponente angeben können.

Formatieren der Zeitkomponente

Hier ist ein Beispiel für die Formatierung der Zeitkomponente:

SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p');

Ergebnis:

11:03:15 AM

In diesem Beispiel %p wird verwendet, um entweder AM oder PM anzuzeigen, je nachdem, was der Fall ist.

Natürlich können Sie sie miteinander kombinieren, um sowohl das Datum als auch die Uhrzeit auf einmal zu formatieren:

SELECT DATE_FORMAT('2018-12-01 11:03:15', '%H:%i:%s %p, %W, %d %M %Y');

Ergebnis:

11:03:15 AM, Saturday, 01 December 2018

Formatieren mit einer Datums-/Zeitfunktion

Oft möchten Sie DATE_FORMAT() verwenden zusammen mit einer weiteren Datums-/Uhrzeitfunktion. Sie könnten es beispielsweise zusammen mit CURDATE() verwenden um das aktuelle Datum nett formatiert zurückzugeben:

SELECT 
 CURDATE() AS Unformatted, 
 DATE_FORMAT(CURDATE(), '%W, %M %d, %Y') AS Formatted;

Ergebnis:

+-------------+----------------------+
| Unformatted | Formatted            |
+-------------+----------------------+
| 2018-05-04  | Friday, May 04, 2018 |
+-------------+----------------------+

Sie können dies auch mit dem NOW() tun Funktion, wenn Sie die Zeit brauchen:

SELECT
 NOW() AS Unformatted,
 DATE_FORMAT(NOW(), '%r') AS Formatted;

Ergebnisse:

+---------------------+-------------+
| Unformatted         | Formatted   |
+---------------------+-------------+
| 2018-05-04 14:33:52 | 02:33:52 PM |
+---------------------+-------------+

Die TIME_FORMAT()-Funktion

MySQL hat auch ein TIME_FORMAT() Funktion, mit der die Uhrzeit formatiert werden kann. Diese Funktion funktioniert ähnlich wie DATE_FORMAT() außer dass TIME_FORMAT() akzeptiert nur Formatbezeichner für Stunden, Minuten, Sekunden und Mikrosekunden.

Beispiel:

SET @time = '07:35:10';
 SELECT
 TIME_FORMAT(@time, '%H') AS Hour,
 TIME_FORMAT(@time, '%i') AS Minute,
 TIME_FORMAT(@time, '%s') As Seconds,
 TIME_FORMAT(@time, '%p') AS 'AM or PM';

Ergebnisse:

+------+--------+---------+----------+
| Hour | Minute | Seconds | AM or PM |
+------+--------+---------+----------+
| 07   | 35     | 10      | AM       |
+------+--------+---------+----------+

Die STR_TO_DATE()-Funktion

Das STR_TO_DATE() Funktion ist die Umkehrung von DATE_FORMAT() Funktion. Sie können damit eine Zeichenfolge angeben, die als Datum formatiert werden soll. Es akzeptiert zwei Parameter; die Zeichenfolge und das Format.

Hier ist ein Beispiel:

SELECT STR_TO_DATE('Saturday, 6 December 2018', '%W, %d %M %Y') AS Date;

Ergebnis:

+------------+
| Date       |
+------------+
| 2018-12-06 |
+------------+

So finden Sie das richtige Datumsformat

MySQL hat eine praktische kleine Funktion namens GET_FORMAT() . Diese Funktion hilft Ihnen, das richtige Format zu finden, wenn Sie DATE_FORMAT() verwenden Funktion und/oder die STR_TO_DATE() Funktion .

So funktioniert es:

SELECT GET_FORMAT(DATE, 'USA');

Daraus ergibt sich Folgendes:

%m.%d.%Y

Das sagt uns die Formatzeichenfolge, die wir verwenden müssen, wenn wir ein Datum mit DATE_FORMAT() formatieren Funktion. Beispielsweise könnten wir die Ergebnisse aus diesem Beispiel nehmen und sie auf DATE_FORMAT() anwenden Funktion:

SELECT DATE_FORMAT(NOW(), '%m.%d.%Y');

Und wir würden mit dem gewünschten Ergebnis enden:

05.04.2018

Sie können auch GET_FORMAT() übergeben direkt an DATE_FORMAT() wenn Sie es vorziehen.

SELECT DATE_FORMAT(NOW(), GET_FORMAT(DATE, 'USA'));

Ergebnis:

05.04.2018

In jedem Fall finden Sie unten Beispiele mit verschiedenen Optionen.

Datum

SELECT 
    GET_FORMAT(DATE, 'USA') AS USA,
    GET_FORMAT(DATE, 'JIS') AS JIS,
    GET_FORMAT(DATE, 'ISO') AS ISO,
    GET_FORMAT(DATE, 'EUR') AS EUR,
    GET_FORMAT(DATE, 'INTERNAL') AS INTERNAL;

Ergebnis:

+----------+----------+----------+----------+----------+
| USA      | JIS      | ISO      | EUR      | INTERNAL |
+----------+----------+----------+----------+----------+
| %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d   |
+----------+----------+----------+----------+----------+

DatumUhrzeit

SELECT 
    GET_FORMAT(DATETIME, 'USA') AS USA,
    GET_FORMAT(DATETIME, 'JIS') AS JIS,
    GET_FORMAT(DATETIME, 'ISO') AS ISO,
    GET_FORMAT(DATETIME, 'EUR') AS EUR,
    GET_FORMAT(DATETIME, 'INTERNAL') AS INTERNAL;

Ergebnis:

+-------------------+-------------------+-------------------+-------------------+--------------+
| USA               | JIS               | ISO               | EUR               | INTERNAL     |
+-------------------+-------------------+-------------------+-------------------+--------------+
| %Y-%m-%d %H.%i.%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H.%i.%s | %Y%m%d%H%i%s |
+-------------------+-------------------+-------------------+-------------------+--------------+

Zeit

SELECT 
    GET_FORMAT(TIME, 'USA') AS USA,
    GET_FORMAT(TIME, 'JIS') AS JIS,
    GET_FORMAT(TIME, 'ISO') AS ISO,
    GET_FORMAT(TIME, 'EUR') AS EUR,
    GET_FORMAT(TIME, 'INTERNAL') AS INTERNAL; 

Ergebnis:

+-------------+----------+----------+----------+----------+
| USA         | JIS      | ISO      | EUR      | INTERNAL |
+-------------+----------+----------+----------+----------+
| %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s   |
+-------------+----------+----------+----------+----------+