从此日期获取行到此日期

时间:2013-08-21 11:42:03

标签: sql sql-server database sql-server-2008

我真的无法得到它。

代码 -

select * 
from Bill_Detail 
where DateTimeofBilling > '8/18/2013 12:00:00 PM' 
  and DateTimeofBilling < '8/20/2013 12:00:00 AM'

psudocode -

select all 
from Bill_Detail 
where DateTimeofBilling greater than 8/18/2013 
  and DateTimeofBilling less than 8/20/2013

我需要获取从2013年8月18日到2013年8月20日的行,但代码不返回任何内容。

我认为这是对此的充分解释。有人可以帮忙吗?

6 个答案:

答案 0 :(得分:2)

为什么使用PM(中午,而不是午夜)进行“大于”检查?您的伪代码假定您也想使用PM。

select * 
from Bill_Detail 
where DateTimeofBilling >= '20130818'-- if you want to include this day completely
  and DateTimeofBilling < '20130820' -- if you want to exclude this day completely

答案 1 :(得分:0)

试试这个..

select * from Bill_Detail where DateTimeofBilling > '2013/08/18 12:00:00 PM' and DateTimeofBilling < '2013/08/20 12:00:00 AM'

答案 2 :(得分:0)

如果您的列DateTimeofBilling是类型日期时间,请将其与日期进行比较,而不是与varchar进行比较:

select * 
from Bill_Detail 
where
    DateTimeofBilling >= convert(date, '20130818', 112) and
    DateTimeofBilling < convert(date, '20130821', 112)

这个会返回DateTimeofBilling的行,其中日期大于或等于2013-08-18且小于或等于2013-08-20

答案 3 :(得分:0)

之间使用
SELECT *
FROM Bill_Detail
WHERE DateTimeofBilling BETWEEN '20130818 000000' 
    AND DateTimeofBilling < '2013/08/20 12:00:00 AM'

答案 4 :(得分:0)

试试这个,

select * from Bill_Detail where DateTimeofBilling between '8/18/2013 12:00:00 PM' and  '8/20/2013 12:00:00 AM'

答案 5 :(得分:0)

SELECT * FROM Bill_Detail WHERE DateTimeofBilling>='8/18/2013 12:00:00 PM' AND DateTimeofBilling<='8/20/2013 12:00:00 AM' ORDER BY DateTimeofBilling