Trong SQL Server, bạn có thể sử dụng MONTH()
hàm để chuyển đổi tên tháng thành số tương ứng của nó.
Ví dụ
Dưới đây là một ví dụ về chuyển đổi tên tháng thành số tháng.
SELECT MONTH('September' + '1,1');
Kết quả:
9
Những gì tôi đang làm ở đây về cơ bản là tạo ra một “ngày tháng” (bao gồm tháng được chỉ định của tôi) để Máy chủ SQL không gặp lỗi khi sử dụng MONTH()
hoạt động không có ngày hợp lệ.
Hàm này chấp nhận bất kỳ biểu thức nào có thể được giải quyết thành thời gian , ngày , smalldatetime , ngày giờ , datetime2 hoặc datetimeoffset giá trị. Nó có thể là một biểu thức, biểu thức cột, biến do người dùng xác định hoặc chuỗi ký tự.
Thêm “Ngày giống như”
Bạn cũng có thể cung cấp đối số “giống ngày tháng” hơn bằng cách làm như sau:
SELECT MONTH('September' + ' 01, 1900');
Kết quả:
9
Ngày &Năm hiện tại
Hoặc nếu bạn muốn sử dụng ngày và năm hiện tại, bạn có thể làm như sau:
SELECT MONTH('September' + FORMAT(GETDATE(), 'd,y'));
Kết quả:
9
Tuy nhiên, chỉ cần nói rõ, trừ khi tháng được chỉ định giống với tháng hiện tại, bạn sẽ có một ngày khác với ngày hiện tại.
Dưới đây là một ví dụ để minh họa ý tôi muốn nói:
SELECT
FORMAT(GETDATE(), 'MMMM d, yyyy') AS [Today],
'September' + FORMAT(GETDATE(), ' d, yyyy') AS [Modified],
MONTH('September' + FORMAT(GETDATE(), ' d, yyyy')) AS [Month Number];
Kết quả:
+----------------+--------------------+----------------+ | Today | Modified | Month Number | |----------------+--------------------+----------------| | March 22, 2020 | September 22, 2020 | 9 | +----------------+--------------------+----------------+
Tôi đã chạy truy vấn này vào ngày 22 tháng 3 năm 2020, nhưng ngày sửa đổi là ngày 22 tháng 9 năm 2020.
Bất kể, số tháng chính xác được trả về khi chúng tôi sử dụng MONTH()
.