Trong SQLite, chúng ta có thể sử dụng phương pháp sau để tính ngày cuối cùng của một tháng nhất định.
Chúng tôi có thể căn cứ vào ngày hiện tại hoặc vào một số ngày cụ thể khác.
Ngày cuối cùng của tháng hiện tại
Dưới đây là một ví dụ trả về ngày cuối cùng của tháng hiện tại:
SELECT DATE('now', 'start of month', '+1 month', '-1 day');
Kết quả:
2022-03-31
Điều này sử dụng DATE()
hàm để trả về kết quả mà chúng ta muốn. 'now'
đối số trả về ngày hiện tại và 'start of month'
đối số sửa đổi nó thành đầu tháng. Sau đó, chúng tôi sử dụng '+1 month'
để thêm một tháng vào đầu tháng (sẽ chuyển ngày đó sang đầu tháng sau), sau đó chúng tôi giảm ngày đó đi một ngày (để đưa ngày đó trở lại cuối tháng đầu tiên).
Ngày cuối cùng của tháng được chỉ định
Nhưng như đã đề cập, chúng tôi không giới hạn chỉ đến cuối tháng hiện tại. Chúng tôi có thể chỉ định bất kỳ ngày nào và nó sẽ trả về cuối tháng, dựa trên ngày đó.
Dưới đây là một số ví dụ:
SELECT
DATE('2023-02-10', 'start of month', '+1 month', '-1 day') AS Feb,
DATE('2023-11-10', 'start of month', '+1 month', '-1 day') AS Nov,
DATE('2023-12-10', 'start of month', '+1 month', '-1 day') AS Dec;
Kết quả:
Feb Nov Dec ---------- ---------- ---------- 2023-02-28 2023-11-30 2023-12-31
Chúng ta có thể thấy rằng SQLite đủ thông minh để tính ra bao nhiêu ngày trong mỗi tháng. Khi chúng tôi sử dụng '+1 month'
, SQLite biết có bao nhiêu ngày trong mỗi tháng. Chúng ta có thể thấy rằng tháng 2 có 28 ngày, ngày 30 tháng 11 và tháng 12 có 31 ngày.
Nếu chúng ta chuyển ngày ban đầu sang năm 2024, chúng ta có thể thấy rằng tháng Hai có 29 ngày trong năm đó:
SELECT
DATE('2024-02-10', 'start of month', '+1 month', '-1 day') AS Feb,
DATE('2024-11-10', 'start of month', '+1 month', '-1 day') AS Nov,
DATE('2024-12-10', 'start of month', '+1 month', '-1 day') AS Dec;
Kết quả:
Feb Nov Dec ---------- ---------- ---------- 2024-02-29 2024-11-30 2024-12-31