Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách định dạng ngày và giờ trong MySQL

Trong MySQL, DATE_FORMAT() cho phép bạn định dạng ngày và giờ.

Đây là một ví dụ:

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

Kết quả:

Saturday, 01 December 2018

Trong ví dụ này, %W dành cho tên ngày trong tuần, %d là ngày trong tháng, %M là cho Tháng và %Y dành cho Năm. Có nhiều công cụ chỉ định định dạng khác có sẵn cho phép bạn chỉ định một định dạng chính xác cho ngày tháng cũng như thành phần thời gian.

Định dạng thành phần thời gian

Dưới đây là một ví dụ về định dạng thành phần thời gian:

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

Kết quả:

11:03:15 AM

Trong ví dụ này, %p được sử dụng để hiển thị SA hoặc CH, tùy theo trường hợp.

Tất nhiên, bạn có thể kết hợp chúng với nhau để định dạng cả ngày và giờ trong một lần:

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

Kết quả:

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

Định dạng với Hàm Ngày / Giờ

Thường thì bạn sẽ muốn sử dụng DATE_FORMAT() cùng với một chức năng ngày / giờ khác. Ví dụ:bạn có thể sử dụng nó cùng với CURDATE() để trả về ngày hiện tại, được định dạng độc đáo:

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

Kết quả:

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

Bạn cũng có thể thực hiện việc này với NOW() chức năng nếu bạn cần thời gian:

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

Kết quả:

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

Hàm TIME_FORMAT ()

MySQL cũng có TIME_FORMAT() chức năng có thể được sử dụng để định dạng thời gian. Hàm này hoạt động tương tự như DATE_FORMAT() ngoại trừ TIME_FORMAT() đó chỉ chấp nhận các mã định dạng chỉ cho giờ, phút, giây và micro giây.

Ví dụ:

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

Kết quả:

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

Hàm STR_TO_DATE ()

STR_TO_DATE() hàm là nghịch đảo của DATE_FORMAT() hàm số. Nó cho phép bạn cung cấp một chuỗi được định dạng như một ngày tháng. Nó chấp nhận hai tham số; chuỗi và định dạng.

Đây là một ví dụ:

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

Kết quả:

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

Cách Tìm Định dạng Ngày Chính xác

MySQL có một chức năng nhỏ tiện dụng được gọi là GET_FORMAT() . Hàm này giúp bạn tìm định dạng chính xác để sử dụng khi sử dụng DATE_FORMAT() và / hoặc STR_TO_DATE() chức năng.

Đây là cách nó hoạt động:

SELECT GET_FORMAT(DATE, 'USA');

Điều này dẫn đến kết quả sau:

%m.%d.%Y

Điều này cho chúng ta biết chuỗi định dạng mà chúng ta cần sử dụng khi định dạng ngày bằng DATE_FORMAT() hàm số. Ví dụ:chúng tôi có thể lấy kết quả từ ví dụ đó và áp dụng chúng cho DATE_FORMAT() chức năng:

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

Và chúng tôi sẽ có kết quả mong muốn:

05.04.2018

Bạn cũng có thể vượt qua GET_FORMAT() trực tiếp đến DATE_FORMAT() nếu bạn thích.

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

Kết quả:

05.04.2018

Trong mọi trường hợp, dưới đây là các ví dụ với các tùy chọn khác nhau.

Ngày

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;

Kết quả:

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

Ngày giờ

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;

Kết quả:

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

Thời gian

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; 

Kết quả:

+-------------+----------+----------+----------+----------+
| USA         | JIS      | ISO      | EUR      | INTERNAL |
+-------------+----------+----------+----------+----------+
| %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. Không thể xóa hoặc cập nhật hàng mẹ:ràng buộc khóa ngoại không thành công

  2. JSON_DEPTH () - Tìm độ sâu tối đa của tài liệu JSON trong MySQL

  3. Trả về bản ghi thứ n từ truy vấn MySQL

  4. Neo4j - Xóa mối quan hệ bằng Cypher

  5. Sử dụng LIMIT trong GROUP BY để nhận N kết quả cho mỗi nhóm?