日期字段数据类型varchar与SSMS中的减法运算符不兼容

时间:2018-08-20 09:44:21

标签: sql sql-server sql-server-2016

我试图为此寻找答案,但是我找到的解决方案都没有用。

我需要互相减去2个日期字段:datearrival-已离开的日期,但它们都是varchar,所以减法运算符将不起作用。

有人可以用代码和/或日期差异使我的答案吗?

我当前的代码是:

ValidationError({'live_revision': ['page revision instance with id 33 does not exist.']})

这突出显示了无法识别的列名,即使在其余查询中使用多边界标识符也没问题。

请问有什么好的答案吗?

2 个答案:

答案 0 :(得分:0)

declare @ARRIVDAT varchar(12) ='1JAN18', @DEPARTDAT varchar(12) = '2FEB18'
select DATEDIFF(dd, @ARRIVDAT, @DEPARTDAT) LengthOfStay

我认为它将进行隐式转换。您也不需要强制转换或转换。

答案 1 :(得分:0)

您需要功能DATEDIFF()。您可以转换值:

DATEDIFF(day, CONVERT(date, ARRIVDAT]), CONVERT(date, DEPARTDAT) AS LengthOfStay

如果隐式转换不起作用,请仔细阅读documentation以获取适用的适当格式。