在Microsoft SQL Server中使用日期时间转换进行查询


Query in Microsoft SQL Server using Datetime Convert

我想知道如何使用datetime转换查询数据:

示例:

WHERE TO_CHAR(FQA_END_DATE,'YYYY-MM-DD') = '2014-03-25'

SQL Server呢?

WHERE ...

请帮忙指点。

谢谢

在sql server中可以这样做

WHERE CAST(Date_Column AS DATE) = '20140325'   --<--  'YYYYMMDD'  ANSI Standard

WHERE CAST(Date_Column AS DATE) = CAST(GETDATE() AS DATE)

如果FQA_END_DATE是datetime数据类型;您不需要将其转换为字符以将其与字符串进行比较。您只需要以明确的格式提供字符串,例如ISO格式yyyyMMdd;

所以如果FQA_END_DATE是一个日期时间,这将工作:

WHERE FQA_END_DATE = '20140325'

但是,如果FQA_END_DATE包含时间部分和日期,并且您只对比较日期部分感兴趣(并且您没有date数据类型),则存在许多方法,但一个技巧是运行它超过float;

WHERE CAST(FLOOR(CAST(FQA_END_DATE AS FLOAT)) AS DATETIME) = '20140325'

转换/删除datetime变量的时间部分。同样也可以通过使用DATEPART或DATEDIFF函数来实现。

最终-您可以使用CONVERT将WHERE的两边转换为相同的日期格式;

WHERE CONVERT(DATETIME, FQA_END_DATE, 112) = CONVERT(DATETIME, '20140325', 112)

解决这个问题的方法有很多,希望能给大家一些启发。

我能给你的最好的建议是,如果处理日期作为字符串,使用yyyyMMdd(20140325)的ISO格式,因为SQL Server可以自动转换。