Chúng ta có thể sử dụng DATE()
của SQLite hàm để thực hiện các phép tính vào một ngày nhất định. Một trong những điều chúng tôi có thể làm là trả lại phiên bản đầu tiên, thứ hai, thứ ba hoặc thứ tư của một ngày nhất định trong một tháng nhất định.
Ví dụ
Dưới đây là một ví dụ để chứng minh:
SELECT
DATE('2025-10-20', 'start of month', 'weekday 1') AS "First",
DATE('2025-10-20', 'start of month', '+7 days', 'weekday 1') AS "Second",
DATE('2025-10-20', 'start of month', '+14 days', 'weekday 1') AS "Third",
DATE('2025-10-20', 'start of month', '+21 days', 'weekday 1') AS "Fourth",
DATE('2025-10-20', 'start of month', '+28 days', 'weekday 1') AS "Fifth";
Kết quả:
First Second Third Fourth Fifth ---------- ---------- ---------- ---------- ---------- 2025-10-06 2025-10-13 2025-10-20 2025-10-27 2025-11-03
Trong ví dụ này, ngày bắt đầu giống nhau cho tất cả các trường hợp, cũng như hầu hết các đối số. Điều duy nhất thay đổi là số tiền chúng tôi thêm vào đầu tháng. Nếu chúng tôi không thêm bất cứ điều gì, chúng tôi có thể trả về Thứ Hai đầu tiên, thêm 7 ngày sẽ trả về Thứ Hai thứ hai, v.v.
Ở đây, chúng tôi sử dụng start of month
để đưa ngày trở lại ngày đầu tiên của tháng. Sau đó, chúng tôi sử dụng nhiều công cụ sửa đổi hơn để sửa đổi ngày đó cho phù hợp.
weekday 1
công cụ sửa đổi chuyển ngày sang Thứ Hai tiếp theo (Chủ Nhật là 0, Thứ Hai là 1, Thứ Ba là 2, v.v.).
Để có được thứ Hai thứ hai, chúng ta có thể sử dụng +7 days
để dời ngày về phía trước một tuần. Đối với các ngày Thứ Hai tiếp theo, chúng tôi thêm 7 ngày vào con số đó (+14 days
, +21 days
, +28 days
vv).
Chúng ta cũng có thể thấy rằng việc thêm 28 ngày sẽ trả về Thứ Hai đầu tiên của tháng tiếp theo.