我正在使用SQL Server 2008 R2
当检查表格中的值时,我发现很少的值存储为2015-03-20T06:06:46
,很少的值存储为11/25/2014
。那么现在如何将where子句中的这两个值与getdate()
SELECT B.Value
FROM table1 A WITH (NOLOCK)
INNER JOIN table1 B WITH (NOLOCK) ON A.id = B.id
WHERE
A.Name = 'COMPLETED_AT'
AND CONVERT(smalldatetime, A.Value) < GETDATE() - 30
AND B.Name = 'RESULT'
收到错误消息
将字符串转换为smalldatetime数据类型时转换失败
执行上述查询时
示例表结构
ID Name Value
1 Result R12344
1 Completed_At 2015-03-20T06:06:46
2 Result R23445
2 Completed_At 2014-03-20T06:06:46
3 Result R83261
3 Completed_At 11/25/2014
列值为nvarchar(400)
数据类型
查询结果应显示结果名称类型的值,这些值已被输入超过30天。
期待您的回复。
答案 0 :(得分:0)
最后通过链接后我自己回答了我的查询 https://msdn.microsoft.com/en-us/library/ms187928.aspx
CONVERT(nvarchar(400),A.value,126) < CONVERT(nvarchar(400),GETDATE()-30,126)
当我在where子句中使用上面的值时,我没有得到任何错误,结果也是正确的