Sql server 2008 如何通过Getdate()函数减去行值

Sql server 2008 如何通过Getdate()函数减去行值,sql-server-2008,Sql Server 2008,我试图从列中获取getdate和我的值之间的差异 下面的S.RefMonthstart是我正在尝试的查询,但是,我得到一个错误,如 Msg 8117,级别16,状态1,第10行操作数数据类型日期无效 用于添加运算符 这里,我的列RefMonthStart的类型为varchar,其值如下 0 三十一 61 现在我怎么会出现这个错误呢你可以这样重写你的查询 SELECT DATEDIFF(d,cast(s.RefMonthStart AS DATETIME),GETDATE()) AS 'Row N

我试图从列中获取getdate和我的值之间的差异

下面的S.RefMonthstart是我正在尝试的查询,但是,我得到一个错误,如

Msg 8117,级别16,状态1,第10行操作数数据类型日期无效 用于添加运算符

这里,我的列RefMonthStart的类型为varchar,其值如下

0

三十一

61


现在我怎么会出现这个错误呢

你可以这样重写你的查询

SELECT DATEDIFF(d,cast(s.RefMonthStart AS DATETIME),GETDATE()) AS 'Row Number' 
FROM Table1 s
这里有一个同样的sqlfiddle示例

通常使用DATEDIFF获取日期之间的差异。。你是不是想找出几天内的差异?月?年。。此外,如果您尝试转换“31”和“61”的varchar值,它们将失败,这些数字应该代表什么?它们应该是多少天?
SELECT DATEDIFF(d,cast(s.RefMonthStart AS DATETIME),GETDATE()) AS 'Row Number' 
FROM Table1 s