Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Lấy tên ngày từ TIMESTAMP trong MySQL?

Giải pháp: DAYNAME()

Hàm DAYNAME(date) trả về tên ngày trong tuần (Monday, Tuesday...).

Ví dụ minh họa

Tạo bảng

mysql> CREATE TABLE DemoTable (
    LoginDate TIMESTAMP
);

mysql> INSERT INTO DemoTable VALUES('2019-06-01');
mysql> INSERT INTO DemoTable VALUES('2019-06-02');
mysql> INSERT INTO DemoTable VALUES('2019-06-03');
mysql> INSERT INTO DemoTable VALUES('2019-06-04');
mysql> INSERT INTO DemoTable VALUES('2018-06-21');

Dữ liệu gốc

+-----------------------+
| LoginDate             |
+-----------------------+
| 2019-06-01 00:00:00   |
| 2019-06-02 00:00:00   |
| 2019-06-03 00:00:00   |
| 2019-06-04 00:00:00   |
| 2018-06-21 00:00:00   |
+-----------------------+

Truy vấn DAYNAME

mysql> SELECT DAYNAME(LoginDate) FROM DemoTable;

Kết quả

+--------------------+
| DAYNAME(LoginDate) |
+--------------------+
| Saturday           |
| Sunday             |
| Monday             |
| Tuesday            |
| Thursday           |
+--------------------+

Các hàm liên quan ngày/tháng

HàmTrả vềVí dụ
DAYNAME()Tên ngày (English)Monday
DAYOFWEEK()Số thứ tự (1=CN, 7=Thứ 7)2
DAYOFMONTH()Ngày trong tháng15
DAYOFYEAR()Ngày trong năm166
MONTHNAME()Tên thángJanuary
WEEKDAY()Số thứ tự (0=Thứ 2, 6=CN)0
WEEK()Tuần trong năm25
QUARTER()Quý (1-4)2

Đổi ngôn ngữ (Locale)

MySQL trả về tiếng Anh mặc định. Để đổi ngôn ngữ:

-- Set session locale
SET lc_time_names = 'vi_VN';

SELECT DAYNAME('2019-06-01');  -- Thứ Bảy
SELECT MONTHNAME('2019-06-01'); -- Tháng Sáu

Hoặc dùng DATE_FORMAT() với locale:

SELECT DATE_FORMAT(LoginDate, '%W') FROM DemoTable;  -- Tên ngày đầy đủ
SELECT DATE_FORMAT(LoginDate, '%a') FROM DemoTable;  -- Tên ngày viết tắt (Mon, Tue)

Ứng dụng: Lọc ngày cuối tuần

SELECT * FROM DemoTable 
WHERE DAYOFWEEK(LoginDate) IN (1, 7);  -- Chủ nhật (1) hoặc Thứ 7 (7)