Tôi cần truy vấn trong SQL.
Nếu tôi có hai cột STARTDATE
và END_DATE
.
Tôi muốn chọn tất cả các hàng có ngày nằm giữa hai ngày này.Chọn ngày giữa hai cột
ví dụ: startdate = 1/1/2011 VÀ enddate = 2/2/2011.
Tôi cần truy vấn trong SQL.
Nếu tôi có hai cột STARTDATE
và END_DATE
.
Tôi muốn chọn tất cả các hàng có ngày nằm giữa hai ngày này.Chọn ngày giữa hai cột
ví dụ: startdate = 1/1/2011 VÀ enddate = 2/2/2011.
SELECT * FROM table1
WHERE '2011-01-01' BETWEEN table1.startdate AND table1.enddate
Replace ngày rõ ràng hoặc với now()
hoặc một tham số hoặc bất cứ điều gì.
Nếu ENDDATE là không định nghĩa là NOT NULL
bạn có thể làm:
SELECT * FROM table1
WHERE '2011-01-01' BETWEEN table1.startdate AND COALESCE(table1.enddate, NOW())
Điều này có giúp ích cho bạn không?
select *
from table
where START_DATE < NOW() AND END_DATE > NOW()
Tùy thuộc vào cơ sở dữ liệu, sử dụng CURRENT_TIMESTAMP() hoặc TODAY()
Bạn có nghĩa này:
select *
from mytable
where start_date >= '01/01/2011'
and end_date <= '02/01/2011'
Cho đến khi bạn làm nhiều hơn nữa để làm rõ câu hỏi của bạn, thật khó cho chúng tôi để cung cấp câu trả lời tốt hơn.
Bạn có nghĩa là bạn cần một hàng cho mỗi ngày riêng lẻ giữa bắt đầu và kết thúc trong tập hợp kết quả không? – Yuck
có thể trùng lặp của [Nhận danh sách các ngày giữa hai ngày] (http://stackoverflow.com/questions/510012/get-a-list-of-dates-between-two-dates) – Jacob
Nếu đây là MySQL. Nếu không, xin lỗi vì cuộc bỏ phiếu gần gấp đôi nhanh chóng :) – Jacob