【发布时间】:2012-05-23 11:53:02
【问题描述】:
我在 SQL Server 2005 中将字符串转换为 datetime 时遇到问题。
如果在这样的 where 语句中使用 Convert(datetime, x):
SELECT ThumbId
FROM [ImageBankSQL].[dbo].[MetaData]
WHERE (DataKey = 'ImagePropertyTagExifDTOrig'
OR DataKey='ImagePropertyTagDateTime')
AND CONVERT(datetime, DataValue, 120) > CONVERT(datetime, '2011-09-23 00:00:00', 120)
我明白了:
从字符串转换日期时间时转换失败
但是,如果我选择转换后的 datetime 而不是在 where 语句中使用它们,一切都很好,并且我得到了转换后的日期:
SELECT ThumbId, Convert(datetime, DataValue, 120), Convert(datetime, '2011-09-23 00:00:00', 120)
FROM [ImageBankSQL].[dbo].[MetaData]
WHERE (DataKey = 'ImagePropertyTagExifDTOrig'
OR DataKey = 'ImagePropertyTagDateTime')
在这两个示例中,我都使用了Convert(datetime, DataValue, 120) 和Convert(datetime, DataValue),结果相同。
为什么我可以在选择中转换,但不能在哪里转换?以及如何在 where 语句中使用 convert 进行第一个查询?
【问题讨论】:
标签: sql-server-2005 datetime type-conversion