sql >> Database >  >> RDS >> Mysql

Hoe de datum en tijd op te maken in MySQL

In MySQL is de DATE_FORMAT() functie stelt u in staat om de datum en tijd te formatteren.

Hier is een voorbeeld:

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

Resultaat:

Saturday, 01 December 2018

In dit voorbeeld %W is voor de naam van de weekdag, %d is voor de dag van de maand, %M is voor maand, en %Y is voor Jaar. Er zijn veel meer formaatspecificaties beschikbaar waarmee u een nauwkeurig formaat voor datums en de tijdcomponent kunt specificeren.

De tijdcomponent opmaken

Hier is een voorbeeld van het opmaken van de tijdcomponent:

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

Resultaat:

11:03:15 AM

In dit voorbeeld, %p wordt gebruikt om AM of PM weer te geven, afhankelijk van wat het geval is.

Je kunt ze natuurlijk combineren om zowel de datum als de tijd in één keer op te maken:

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

Resultaat:

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

Formatteren met een datum/tijd-functie

Vaak wil je DATE_FORMAT() . gebruiken samen met een andere datum/tijd-functie. U kunt het bijvoorbeeld samen met CURDATE() . gebruiken om de huidige datum terug te geven, mooi opgemaakt:

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

Resultaat:

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

Je kunt dit ook doen met de NOW() functie als je de tijd nodig hebt:

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

Resultaten:

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

De TIME_FORMAT()-functie

MySQL heeft ook een TIME_FORMAT() functie die kan worden gebruikt om de tijd te formatteren. Deze functie werkt vergelijkbaar met DATE_FORMAT() behalve dat TIME_FORMAT() accepteert alleen formaatspecificaties voor uren, minuten, seconden en microseconden.

Voorbeeld:

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';

Resultaten:

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

De STR_TO_DATE() Functie

De STR_TO_DATE() functie is het omgekeerde van de DATE_FORMAT() functie. Hiermee kunt u een tekenreeks opgeven die als datum moet worden opgemaakt. Het accepteert twee parameters; de tekenreeks en het formaat.

Hier is een voorbeeld:

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

Resultaat:

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

Het juiste datumformaat vinden

MySQL heeft een handige kleine functie genaamd GET_FORMAT() . Deze functie helpt je bij het vinden van het juiste formaat om te gebruiken bij het gebruik van de DATE_FORMAT() functie en/of de STR_TO_DATE() functie .

Zo werkt het:

SELECT GET_FORMAT(DATE, 'USA');

Dit resulteert in het volgende:

%m.%d.%Y

Dat vertelt ons de opmaakreeks die we moeten gebruiken bij het opmaken van een datum met de DATE_FORMAT() functie. We kunnen bijvoorbeeld de resultaten uit dat voorbeeld nemen en deze toepassen op de DATE_FORMAT() functie:

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

En we zouden eindigen met het gewenste resultaat:

05.04.2018

Je kunt ook GET_FORMAT() pass doorgeven rechtstreeks naar DATE_FORMAT() als je wilt.

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

Resultaat:

05.04.2018

Hieronder staan ​​in ieder geval voorbeelden met verschillende opties.

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;

Resultaat:

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

Datum

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;

Resultaat:

+-------------------+-------------------+-------------------+-------------------+--------------+
| 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 |
+-------------------+-------------------+-------------------+-------------------+--------------+

Tijd

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; 

Resultaat:

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


  1. Oracle krijgt checksum-waarde voor een gegevensblok gedefinieerd door een select-clausule

  2. Basisbeheer van Oracle 12c Multitenant

  3. Een Oracle-database migreren van AWS EC2 naar AWS RDS

  4. Hoe LTRIM() werkt in MariaDB