tôi muốn hiện tất cả các cột nằm trong khoảng 21/08/2007 đến 05/09/2007, xin cám ơn
tôi muốn hiện tất cả các cột nằm trong khoảng 21/08/2007 đến 05/09/2007, xin cám ơn
Bạn thử câu này xem :
select * from TableX where TableX.fieldX >= '21/08/2007' or WWW.fieldX <='05/09/2007'
SELECT * FROM YourTable WHERE YourDateTimeField > '08/21/2007 AND YourDateTimeField < '09/05/2007'
Select * from Table where CotDate between '2007/08/21' and '2007/09/05'
Được sửa bởi hoicobac lúc 14:24 ngày 29-08-2007
Mình dùng between mà nó chỉ so sánh ngày mà tháng năm chẳng thèm so sánh.
Chẳng hiểu cái lỗi quái gì đây nữa.
pác nên convert date sang string thì câu so sánh của pác sẽ chạy đúng(ví dụ:20110312)
declare @datefrom varchar(8)
declare @dateto varchar(8)
set @datefrom = convert(varchar(8),getdate(),112)
set @dateto =convert(varchar(8),getdate(),112)
Select * from TableA
where convert(varchar(8),dateA,112) >= case when @datefrom is not null and @datefrom <> '' then @datefrom else convert(varchar(8),dateA,112) then
and convert(varchar(8),dateA,112) <= case when @dateto is not null and @dateto <> '' then @dateto else convert(varchar(8),dateA,112) then
Trong trường hợp nếu:
@datefrom là rỗng thì sẽ lấy hết
@dateto là rỗng thì sẽ lấy hết
OR
Select * from TableA where convert(varchar(8),dateA,112) between @datefrom and @dateto
ko biết mình viết đúng syntax của SQL ko nữa, nếu sai pác fix dùm mình.
một vài ý của mình, mong giúp dc pác.
Giải thích rất rõ, liên quan đến kiểu datetime rất lung tung, đôi khi có sự nhằm lẫn format kiểu ngày giờ mà đem so sánh nhau cũng sai kết quả.
Bookmarks