如何将列中存储为nvarchar的各种日期格式与SQL Server中的getdate()进行比较

时间:2015-04-06 02:48:17

标签: datetime sql-server-2008-r2

我正在使用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天。

期待您的回复。

1 个答案:

答案 0 :(得分:0)

最后通过链接后我自己回答了我的查询 https://msdn.microsoft.com/en-us/library/ms187928.aspx

    CONVERT(nvarchar(400),A.value,126) < CONVERT(nvarchar(400),GETDATE()-30,126)

当我在where子句中使用上面的值时,我没有得到任何错误,结果也是正确的