T-SQL中的动态日期

时间:2018-02-20 15:40:38

标签: sql sql-server date tsql

我正在研究一个问题,我希望有一个日期动态过滤器(我希望根据今天的日期查看过去6个月)。 Orderdate是INT,这就是我使用nvarchar然后使用date的原因。当我使用下面的代码时,我收到以下错误消息“从字符串转换日期和/或时间时转换失败。”。有谁知道我能做些什么来解决这个问题?

cast(cast(OrderDate as nvarchar) as date) > dateadd(month,-6, getdate()) 

1 个答案:

答案 0 :(得分:0)

显而易见的解决方案是使用try_convert()

try_convert(date, try_convert(varchar(255), OrderDate))  > dateadd(month, -6, getdate())

这将删除错误,但可能无法解决潜在问题。

您可以通过以下方式找到有问题的值:

select OrderDate
from t
where OrderDate is not null and
      try_convert(date, try_convert(varchar(255), OrderDate)) is null