Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да форматирате датата и часа в MySQL

В MySQL, DATE_FORMAT() функцията ви позволява да форматирате датата и часа.

Ето един пример:

ИЗБЕРЕТЕ DATE_FORMAT('2018-12-01', '%W, %d %M %Y');

Резултат:

Събота, 01 декември 2018 г.

В този пример %W е за името на деня от седмицата, %d е за деня от месеца, %M е за месец и %Y е за година. Налични са много повече спецификатори на формат, които ви позволяват да зададете точен формат за дати, както и компонент за време.

Форматиране на компонента за време

Ето пример за форматиране на компонента за време:

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

Резултат:

11:03:15 ч.

В този пример %p се използва за показване на AM или PM, в зависимост от случая.

Разбира се, можете да ги комбинирате заедно, за да форматирате датата и часа наведнъж:

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

Резултат:

11:03:15 ч., събота, 1 декември 2018 г.

Форматиране с функция за дата/час

Често ще искате да използвате DATE_FORMAT() заедно с друга функция за дата/час. Например, можете да го използвате заедно с CURDATE() за да върнете текущата дата, добре форматирана:

ИЗБЕРЕТЕ CURDATE() КАТО неформатиран, DATE_FORMAT(CURDATE(), '%W, %M %d, %Y') КАТО форматиран;

Резултат:

+------------+---------------------+| Неформатиран | Форматиран |+-----------+---------------------+| 2018-05-04 | петък, 04 май 2018 г. |+------------+---------------------+

Можете също да направите това с NOW() функция, ако имате нужда от време:

SELECT NOW() КАТО неформатиран, DATE_FORMAT(NOW(), '%r') КАТО форматиран;

Резултати:

<пред>+---------------------+------------+| Неформатиран | Форматиран |+---------------------+------------+| 2018-05-04 14:33:52 | 14:33:52 |+---------------------+------------+

Функцията TIME_FORMAT()

MySQL също има TIME_FORMAT() функция, която може да се използва за форматиране на часа. Тази функция работи подобно на DATE_FORMAT() освен че TIME_FORMAT() приема само спецификатори на формат само за часове, минути, секунди и микросекунди.

Пример:

SET @time ='07:35:10'; SELECT TIME_FORMAT(@time, '%H') КАТО час, TIME_FORMAT(@time, '%i') КАТО минута, TIME_FORMAT(@time, '%s') Като секунди, TIME_FORMAT(@time, '%p') КАТО 'AM or PM';

Резултати:

+------+-------+--------+----------+| Час | Минута | Секунди | AM или PM |+------+-------+--------+---------+| 07 | 35 | 10 | AM |+------+--------+--------+----------+

Функцията STR_TO_DATE()

STR_TO_DATE() функцията е обратна на DATE_FORMAT() функция. Позволява ви да предоставите низ, който да бъде форматиран като дата. Приема два параметъра; низа и формата.

Ето един пример:

SELECT STR_TO_DATE('събота, 6 декември 2018 г.', '%W, %d %M %Y') AS Дата;

Резултат:

+-----------+| Дата |+-----------+| 2018-12-06 |+-----------+

Как да намерим правилния формат на датата

MySQL има удобна малка функция, наречена GET_FORMAT() . Тази функция ви помага да намерите правилния формат, който да използвате, когато използвате DATE_FORMAT() функция и/или STR_TO_DATE() функция .

Ето как работи:

ИЗБЕРЕТЕ GET_FORMAT(ДАТА, 'САЩ');

Това води до следното:

%m.%d.%Y

Което ни казва форматния низ, който ще трябва да използваме, когато форматираме дата с DATE_FORMAT() функция. Например, можем да вземем резултатите от този пример и да ги приложим към DATE_FORMAT() функция:

ИЗБЕРЕТЕ DATE_FORMAT(NOW(), '%m.%d.%Y');

И в крайна сметка ще постигнем желания резултат:

05.04.2018

Можете също да подадете GET_FORMAT() директно към DATE_FORMAT() ако предпочитате.

ИЗБЕРЕТЕ DATE_FORMAT(NOW(), GET_FORMAT(DATE, 'САЩ'));

Резултат:

05.04.2018

Във всеки случай, по-долу са примери с различни опции.

Дата

ИЗБЕРЕТЕ GET_FORMAT(DATE, 'USA') КАТО САЩ, GET_FORMAT(DATE, 'JIS') КАТО JIS, GET_FORMAT(DATE, 'ISO') КАТО ISO, GET_FORMAT(DATE, 'EUR') КАТО EUR, GET_FORMAT( ДАТА, 'INTERNAL') КАТО ВЪТРЕШНО;

Резултат:

+----------+-----------+---------+----------+-- --------+| САЩ | JIS | ISO | евро | ВЪТРЕШНО |+----------+-----------+----------+---------+--- -------+| %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d |+----------+---------+----------+--------- -+----------+

Дата и час

ИЗБЕРЕТЕ GET_FORMAT(DATETIME, 'USA') КАТО САЩ, GET_FORMAT(DATETIME, 'JIS') КАТО JIS, GET_FORMAT(DATETIME, 'ISO') КАТО ISO, GET_FORMAT(DATETIME, 'EUR') КАТО EUR, GET_FORMAT( DATETIME, 'INTERNAL') КАТО ВЪТРЕШНО;

Резултат:

+-------------------+--------------------+------ -------------+-------------------+--------------+| САЩ | JIS | ISO | евро | ВЪТРЕШНО |+------------------+-------------------+------- ------------+------------------+--------------+| %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 |+------------------+---------------- ---+------------------+-------------------+------ --------+

Време

ИЗБЕРЕТЕ GET_FORMAT(TIME, 'USA') КАТО САЩ, GET_FORMAT(TIME, 'JIS') КАТО JIS, GET_FORMAT(TIME, 'ISO') КАТО ISO, GET_FORMAT(TIME, 'EUR') КАТО EUR, GET_FORMAT( ВРЕМЕ, 'ВЪТРЕШНО') КАТО ВЪТРЕШНО; 

Резултат:

+------------+----------+----------+---------- +----------+| САЩ | JIS | ISO | евро | ВЪТРЕШНО |+------------+----------+----------+----------+ ----------+| %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s |+------------+----------+----------+------ ----+---------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да съпоставим размито имейл или телефон от Elasticsearch?

  2. Как да изберете всичко преди/след определен символ в MySQL – SUBSTRING_INDEX()

  3. MySQL #1093 – Не можете да посочите целева таблица „раздаване“ за актуализация в клауза FROM

  4. Mysql localhost !=127.0.0.1?

  5. MySQL подреждане по преди групиране по