Trong MariaDB, MONTH()
là một hàm ngày và giờ được tích hợp sẵn trả về tháng từ một biểu thức ngày nhất định.
Nó chấp nhận một đối số, đó là ngày bạn muốn trích xuất tháng.
Nó trả về tháng dưới dạng một số trong phạm vi 1
thành 12
từ tháng Giêng đến tháng Mười Hai. Nếu ngày có phần không tháng (ví dụ:0000-00-00
hoặc 2025-00-00
), kết quả là 0
.
Cú pháp
Cú pháp như sau:
MONTH(date)
Nơi date
là biểu thức ngày để lấy tháng.
Ví dụ
Đây là một ví dụ:
SELECT MONTH('2030-08-01');
Kết quả:
+ --------------------- + | THÁNG ('2030-08-01') | + --------------------- + | 8 | + --------------------- +
Giá trị ngày giờ
Nó cũng hoạt động với các giá trị ngày giờ:
SELECT MONTH('2030-08-01 10:30:45');
Kết quả:
+ ------------------------------ + | THÁNG ('2030-08-01 10:30:45') | + ------------------------------ + | 8 | + ------------------------------ +
Tháng 0
Không có tháng nào dẫn đến 0
.
Ví dụ:
SELECT MONTH('2030-00-00');
Kết quả:
+ --------------------- + | THÁNG ('2030-00-00') | + --------------------- + | 0 | + --------------------- +
Số ngày
Cũng có thể chuyển ngày tháng dưới dạng số, miễn là ngày tháng có ý nghĩa.
Ví dụ
SELECT MONTH(20301125);
Kết quả:
+ ----------------- + | THÁNG (20301125) | + ----------------- + | 11 | + ----------------- +
Hoặc thậm chí như sau (sử dụng năm có hai chữ số):
SELECT MONTH(301125);
Kết quả:
+ --------------- + | THÁNG (301125) | + --------------- + | 11 | + --------------- +
Nhưng nó phải có ý nghĩa như một cuộc hẹn hò. Đây là những gì sẽ xảy ra nếu tôi tăng thời gian trong ngày thành một ngày không hợp lệ:
SELECT MONTH(20301135);
Kết quả:
+ ----------------- + | THÁNG (20301135) | + ----------------- + | NULL | + ----------------- +
Các dấu phân cách khác
Bạn có thể sử dụng các dấu phân cách khác cho ngày. MariaDB khá dễ dãi khi nói đến dấu phân cách ngày tháng. Dưới đây là một số ví dụ hợp lệ:
SELECT
MONTH('2030/06/25'),
MONTH('2030,06,25'),
MONTH('2030:06:25'),
MONTH('2030;06!25');
Kết quả (sử dụng đầu ra dọc):
THÁNG ('2030/06/25'):6 THÁNG ('2030,06,25'):6 THÁNG ('2030:06:25'):6 THÁNG ('2030; 06! 25'):6Ngày hiện tại
Chúng ta có thể chuyển
NOW()
làm đối số datetime để sử dụng ngày hiện tại:SELECT NOW(), MONTH(NOW());
Kết quả:
+ --------------------- + -------------- + | NGAY BÂY GIỜ () | THÁNG (NGAY ()) | + --------------------- + -------------- + | 2021-05-16 15:00:06 | 5 | + --------------------- + -------------- +Đối số không hợp lệ
Khi truyền một đối số không hợp lệ,
MONTH()
trả vềnull
:SELECT MONTH('2030-65-78');
Kết quả:
+ --------------------- + | THÁNG ('2030-65-78') | + --------------------- + | NULL | + --------------------- +Thiếu đối số
Đang gọi
MONTH()
với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào, dẫn đến lỗi:SELECT MONTH();
Kết quả:
ERROR 1064 (42000):Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MariaDB của bạn để biết cú pháp phù hợp để sử dụng gần ')' tại dòng 1Và một ví dụ khác:
SELECT MONTH('2030-12-10', '2031-12-10');
Kết quả:
ERROR 1064 (42000):Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MariaDB của bạn để biết cú pháp phù hợp để sử dụng gần '' 2031-12-10 ')' tại dòng 1