2013-08-21 17 views
0

我真的无法得到它。从此日期开始到此日期的行

代码 -

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日,但代码没有返回。

我认为这足以解释这一点。谁能帮忙?

+0

你一定有符合条件的行? –

+0

当然。我得到了这些范围内的日期,但代码返回我期望会是正确的。 –

+0

此代码选择8/18的下午和8/19的全天。这是需求还是需要8/19或8/18和/或8/20? –

回答

0

试试这个..

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

woa。它工作,但发生了什么?你做了什么?你可以解释吗? –

+0

sql服务器接受yyyy/mm/dd格式,所以我已经转换你的日期格式 – Prashant16

+0

你改变了格式,我明白了。如何将C#的DateTime.Now格式更改为该格式,通常DateTime.Now.ToString()会以'8/20/2013 12:00:00 PM' –

0

如果列DateTimeofBilling是datetime类型,它与日期比较,而不是与VARCHAR:

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

这一次将返回行与DateTimeofBilling哪里日期大于等于2013-08-18且小于等于2013-08-20

+0

为什么不使用BETWEEN而不是greaterthan/lessthan? – Recipe

+1

如果列是datetime类型,则必须谨慎选择上限时间,以免错过任何行。我发现它更明确地使用严格少和下一个日期 –

0

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

的代码不起作用 –

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 
0

试试这个,

select * from Bill_Detail where DateTimeofBilling between '8/18/2013 12:00:00 PM' and '8/20/2013 12:00:00 AM' 
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 
相关问题