Khi chạy các truy vấn trong MySQL, bạn có thể sử dụng DAYOFYEAR()
hàm để trả về ngày trong năm kể từ một ngày.
Hàm này chấp nhận một đối số và nó trả về giá trị trong khoảng 1 và 366 , tùy thuộc vào ngày nào trong năm mà phần ngày của đối số thể hiện.
Cú pháp
Cú pháp như sau:
DAYOFYEAR(date)
Nơi date
là giá trị ngày mà bạn muốn trả về ngày trong năm.
Ví dụ
Đây là một ví dụ để chứng minh.
SELECT DAYOFYEAR('2019-01-01') AS 'Date 1', DAYOFYEAR('2019-12-31') AS 'Date 2';
Kết quả:
+--------+--------+ | Date 1 | Date 2 | +--------+--------+ | 1 | 365 | +--------+--------+
Trong ví dụ này, để chứng minh hiệu quả thích hợp, tôi chạy hàm này hai lần vào hai ngày khác nhau - một vào đầu năm và một vào cuối năm.
DAYOFYEAR () so với DAYOFMONTH ()
Dưới đây là một ví dụ để chứng minh sự khác biệt giữa DAYOFYEAR()
và DAYOFMONTH()
các chức năng.
SET @date = '2019-10-03'; SELECT @date, DAYOFMONTH(@date) AS 'Day of Month', DAYOFYEAR(@date) AS 'Day of Year';
Kết quả:
+------------+--------------+-------------+ | @date | Day of Month | Day of Year | +------------+--------------+-------------+ | 2019-10-03 | 3 | 276 | +------------+--------------+-------------+
DAYOFMONTH()
hàm trả về giá trị giữa 1 và 31 (hoặc 0 cho các ngày có phần không ngày) đại diện cho ngày trong tháng. Nó đặt lại về 1 vào đầu mỗi tháng.
DAYOFYEAR()
mặt khác, trả về giá trị trong khoảng 1 và 366 . Nó đặt lại về 1 vào đầu mỗi năm.
Một ví dụ về cơ sở dữ liệu
Đây là ví dụ về việc sử dụng DAYOFYEAR()
khi truy vấn cơ sở dữ liệu:
USE sakila; SELECT payment_date AS 'Date/Time', DAYOFYEAR(payment_date) AS 'Day of Year' FROM payment WHERE payment_id = 1;
Kết quả:
+---------------------+-------------+ | Date/Time | Day of Year | +---------------------+-------------+ | 2005-05-25 11:30:37 | 145 | +---------------------+-------------+
Ngày / Giờ hiện tại
Dưới đây là một ví dụ về việc trích xuất phần ngày từ ngày và giờ hiện tại (được trả về bằng cách sử dụng NOW()
chức năng).
SELECT NOW(), DAYOFYEAR(NOW());
Kết quả:
+---------------------+------------------+ | NOW() | DAYOFYEAR(NOW()) | +---------------------+------------------+ | 2018-06-26 08:23:04 | 177 | +---------------------+------------------+
Một cách khác để làm điều này là sử dụng CURDATE()
, chỉ trả về ngày (chứ không trả về thời gian).
SELECT CURDATE(), DAYOFYEAR(CURDATE());
Kết quả:
+------------+----------------------+ | CURDATE() | DAYOFYEAR(CURDATE()) | +------------+----------------------+ | 2018-06-26 | 177 | +------------+----------------------+