TSQL:查询之间的日期 - 忽略时间

Jar*_*red 10 t-sql sql-server

我想在2个日期之间进行查询.我想这样做而不必担心时间.当用户输入他们想要搜索的2个日期时,没有时间选择.这意味着他们输入的日期默认为12:00 AM.

表中的日期确实有时间.我只是想忽略所有的时间,所以搜索带回所述日期范围的任何记录.

这是我的SQL:

TheDate BETWEEN @EnteredBeginDate AND @EnteredEndDate
Run Code Online (Sandbox Code Playgroud)

因此,当用户在8/6/2009和9/9/2009之间进行范围搜索时,我想返回记录:

8/6/2009 11:33:02 AM
8/6/2009 11:39:17 AM
9/9/2009 8:21:30 AM
Run Code Online (Sandbox Code Playgroud)

现在发生的事情是我才回来:

8/6/2009 11:33:02 AM
8/6/2009 11:39:17 AM
Run Code Online (Sandbox Code Playgroud)

有人可以推荐在SQL中执行此操作的最佳方法吗?我知道如何在C#中做到这一点.

JNK*_*JNK 10

只需使用DATEADDenddate将它设置为NEXT日的午夜......

TheDate BETWEEN @EnteredBeginDate AND DATEADD(day, 1, @EnteredEndDate)

如果你想要非常精确,你可以减去一秒或毫秒,使其在你指定的日期11:59:59:

TheDate BETWEEN @EnteredBeginDate AND DATEADD(second, -1, (DATEADD(day, 1, @EnteredEndDate)))


mar*_*c_s 7

如果您使用的是SQL Server 20082008 R2,则可以使用新的DATE数据类型:

TheDate BETWEEN CAST(@EnteredBeginDate AS DATE) AND CAST(@EnteredEndDate AS DATE)
Run Code Online (Sandbox Code Playgroud)

剥离时间部分,只查看日期