如何按日期检索记录忽略时间

时间:2012-09-13 05:02:25

标签: sql-server-2008 datetime-format

我有一个包含日期/时间列的表格,其值为9/11/2012 11:50:08 AM9/11/2012 4:06:19 PM10/11/2012 4:06:19 PM

如何检索'9/11/2012'上的日期记录?

3 个答案:

答案 0 :(得分:3)

这将在MM/dd/yyyy

中返回
SELECT CONVERT(DATETIME, '9/11/2012 11:50:08 AM', 101);

要进入dd/MM/yyyy试试这个:

SELECT CONVERT(DATETIME, '9/11/2012 11:50:08 AM', 103);

有关详情,请参阅CAST and CONVERT (Transact-SQL)How to convert from string to datetime?

编辑:(来自您的评论)

如果您的查询与select * from table where Date like '9/11/2012%'类似,那么您需要转换Date。(假设您的Date列为varchar

您的查询应该是:
如果9/11/2012采用MM/dd/yyyy格式,请尝试以下操作:

SELECT * FROM TABLE WHERE CONVERT(DATETIME, DATE, 101) = '9/11/2012'

如果9/11/2012采用dd/MM/yyyy格式,请尝试以下操作:

SELECT * FROM TABLE WHERE CONVERT(DATETIME, DATE, 103) = '9/11/2012'

答案 1 :(得分:0)

我假设您的列是datetime列,并且您想要获取特定日期的所有行。

在SQL Server 2008中,您可以将datetime列投射到日期。

select *
from YourTable
where cast(DateTimeCol as date) = '2012-09-11'

如果您需要使用字符串文字,我建议您在SQL Server 2008中使用dateformat yyyy-mm-dd

如果可以使用日期参数,那就更好了。

select *
from YourTable
where cast(DateTimeCol as date) = @DateParam

答案 2 :(得分:0)

select * from table where convert(date,date_col)='2012-09-11'