Hầu hết các RDBMS chính đều có các chức năng cho phép chúng tôi trích xuất ngày, tháng và năm từ các giá trị ngày giờ.
Một số RDBMS cung cấp nhiều cách để thực hiện việc này và những cách khác thì hạn chế hơn. Dưới đây là các ví dụ về trích xuất ngày, tháng và năm từ các giá trị ngày trong một số RDBMS phổ biến nhất.
MySQL
MySQL có một số hàm có thể được sử dụng để trích xuất ngày, tháng và năm từ một ngày. Một trong số đó là EXTRACT()
chức năng:
SELECT
EXTRACT(DAY FROM '2035-12-19') AS Day,
EXTRACT(MONTH FROM '2035-12-19') AS Month,
EXTRACT(YEAR FROM '2035-12-19') AS Year;
Kết quả:
+------+-------+------+ | Day | Month | Year | +------+-------+------+ | 19 | 12 | 2035 | +------+-------+------+
Trong trường hợp này, tôi trích xuất từng phần ngày tháng vào trường riêng của nó.
Nếu bạn muốn tất cả các phần của ngày được trả về trong cùng một trường, thì DATE_FORMAT()
chức năng có thể làm điều này cho bạn.
MySQL cũng có một loạt các hàm trả về các phần ngày cụ thể của một ngày, chẳng hạn như DAY()
, MONTH()
, YEAR()
, v.v.
Xem Trả lại Ngày, Tháng và Năm trong MySQL để biết thêm ví dụ.
Oracle
Oracle có TO_CHAR()
hàm có thể được sử dụng để trích xuất các phần ngày tháng trong các trường của riêng chúng hoặc tất cả trong một trường duy nhất. Dưới đây là một ví dụ về việc trả lại chúng trong các trường riêng lẻ:
SELECT
TO_CHAR(DATE '2035-09-26', 'Day') AS Day,
TO_CHAR(DATE '2035-09-26', 'DD') AS DD,
TO_CHAR(DATE '2035-09-26', 'Month') AS Month,
TO_CHAR(DATE '2035-09-26', 'YYYY') AS Year
FROM DUAL;
Kết quả:
DAY DD MONTH YEAR ____________ _____ ____________ _______ Wednesday 26 September 2035
Xem Danh sách đầy đủ các phần tử định dạng ngày giờ trong Oracle này để biết danh sách các phần tử định dạng có thể được sử dụng để định dạng giá trị ngày giờ với chức năng này.
Oracle cũng có EXTRACT()
hàm hoạt động giống như hàm cùng tên của MySQL.
Máy chủ SQL
SQL Server có khá nhiều chức năng có thể trả về các phần ngày tháng như ngày, tháng và năm.
DATEPART()
hàm được thiết kế đặc biệt để trả về các phần cụ thể của ngày:
DECLARE @date date = '2045-07-03';
SELECT
DATEPART(day, @date) AS DAY,
DATEPART(weekday, @date) AS WEEKDAY,
DATEPART(month, @date) AS MONTH,
DATEPART(year, @date) AS YEAR;
Kết quả:
+-------+-----------+---------+--------+ | DAY | WEEKDAY | MONTH | YEAR | |-------+-----------+---------+--------| | 3 | 2 | 7 | 2045 | +-------+-----------+---------+--------+
Một hàm tương tự là DATENAME()
, có thể trả về tên ngày và tháng dưới dạng một chuỗi.
SQL Server cũng có các chức năng như DAY()
, MONTH()
, YEAR()
, v.v. trả về một phần ngày cụ thể.
Và đừng quên FORMAT()
, đây là hàm hoàn hảo nếu bạn muốn trả về tất cả các phần ngày tháng trong cùng một trường.
Xem 6 Hàm lấy Ngày, Tháng và Năm từ một Ngày trong SQL Server để biết thêm ví dụ.
PostgreSQL
PostgreSQL có một số hàm có thể trả về các phần ngày tháng.
Đây là ví dụ về DATE_PART()
chức năng:
SELECT
DATE_PART('DAY', date '2035-10-30') AS "Day",
DATE_PART('DOW', date '2035-10-30') AS "DOW",
DATE_PART('DOY', date '2035-10-30') AS "DOY",
DATE_PART('MONTH', date '2035-10-30') AS "Month",
DATE_PART('YEAR', date '2035-10-30') AS "Year";
Kết quả:
Day | DOW | DOY | Month | Year -----+-----+-----+-------+------ 30 | 2 | 303 | 10 | 2035
PostgreSQL cũng có EXTRACT()
về cơ bản hàm thực hiện cùng một chức năng, ngoại trừ cú pháp hơi khác.
Và TO_CHAR()
có thể được sử dụng nếu bạn muốn trả về nhiều phần ngày tháng trong cùng một trường.
SQLite
SQLite bị hạn chế hơn khi nói đến các chức năng ngày và giờ. Tuy nhiên, bạn vẫn có thể sử dụng STRFTIME()
function để trích xuất ngày, tháng và năm từ một ngày:
SELECT STRFTIME('%d %m %Y', '2035-12-01');
Kết quả:
01 12 2035
Trong ví dụ này, tôi đã trả lại tất cả các phần của ngày trong cùng một trường. Nhưng điều này không nhất thiết phải có. Nếu bạn muốn chúng được trả về trong các trường khác nhau, bạn có thể gọi STRFTIME()
nhiều lần, mỗi lần có một phần tử định dạng khác nhau:
SELECT
strftime('%d', '2035-12-01') AS "Day",
strftime('%m', '2035-12-01') AS "Month",
strftime('%Y', '2035-12-01') AS "Year";
Kết quả:
Day Month Year --- ----- ---- 01 12 2035
MariaDB
MariaDB cung cấp nhiều lựa chọn các hàm có thể trả về ngày, tháng và năm từ một giá trị datetime.
Đây là ví dụ về DATE_FORMAT()
chức năng:
SELECT DATE_FORMAT('2023-07-25', '%W, %D %M %Y');
Kết quả:
+-------------------------------------------+ | DATE_FORMAT('2023-07-25', '%W, %D %M %Y') | +-------------------------------------------+ | Tuesday, 25th July 2023 | +-------------------------------------------+
Chức năng đó cho phép chúng tôi trả về tất cả các phần ngày trong một trường (mặc dù điều này không bắt buộc - bạn có thể dễ dàng trả lại từng phần ngày trong một trường khác bằng cách gọi DATE_FORMAT()
nhiều lần, mỗi lần với một chuỗi định dạng khác nhau).
Và giống như một số ứng dụng khác, MariaDB cũng có EXTRACT()
hàm trích xuất một phần ngày nhất định.
Và cũng có một loạt các hàm cụ thể cho từng phần ngày, chẳng hạn như DAY()
, MONTH()
, YEAR()
, v.v.
Xem 11 Hàm lấy Ngày, Tháng và Năm từ một Ngày trong MariaDB để biết thông tin tóm tắt đầy đủ.