在datetime上转换varchar 114等于什么?

时间:2010-09-02 19:29:23

标签: sql sql-server-2008 datetime formatting

我在将日期时间字段转换为hh:mm:ss.mmm后在日期时间字段中设置相等条件时遇到问题:

select top 1 convert(varchar, timestamp, 114) from TEST_TABLE

/* returns a single entry of 11:33:35:000 */

然后我想查找具有该时间戳的所有条目:

select * from TEST_TABLE where convert(varchar, timestamp, 114) = '11:33:35.000'

/* returns nothing */

我也在R.H.S上尝试了'11:33:35'(没有mmm)的格式。等号,没有运气。如果这很重要,我正在MS SQL Server Management Studio 2008中运行这些查询。但我需要一种跨平台工作的方式,因为最终我正在运行Perl脚本来通过DBI模块执行查询。

2 个答案:

答案 0 :(得分:2)

11:33:35:00011:33:35.000

不同

select * 
from TEST_TABLE 
where convert(varchar, timestamp, 114) = '11:33:35:000'

我更喜欢自己的风格108

select convert(varchar, GETDATE(), 108)

15时29分00秒

答案 1 :(得分:2)

您正在比较字符串,因此它们必须完全相同:

select * from TEST_TABLE where convert(varchar, timestamp, 114) = '11:33:35:000'

注意冒号而不是字符串文字中的句点。