【发布时间】:2018-02-20 15:40:37
【问题描述】:
我正在处理一个问题,我想对日期进行动态过滤(我想根据今天的日期查看过去 6 个月)。 Orderdate 是 INT,这就是我使用 nvarchar 然后日期的原因。当我使用下面的代码时,我收到以下错误消息“从字符串转换日期和/或时间时转换失败。”。有谁知道我能做些什么来解决这个问题?
cast(cast(OrderDate as nvarchar) as date) > dateadd(month,-6, getdate())
【问题讨论】:
-
编辑您的问题并显示
OrderDate的示例。为什么名称中包含“日期”的列会存储为字符串? -
“订单日期为 INT”。你的问题就在那里。使用
Date指定日期,或使用DateTime2指定日期和时间。 -
为什么orderdate是一个int?显然,您存储了一些实际上不是日期的整数值。可能是
20180231,也可能是436289。这就是您使用错误数据类型时得到的结果。另外,don't ever specifynvarcharetc. without length. -
@AaronBertrand Ha,我只是想我应该链接到你的 Bad habits to kick : choosing the wrong data type...
-
您可能以不正确的方式存储值,它应该是
yearmonthdate为int或者它不应该返回上述错误
标签: sql sql-server date tsql