日期转换问题MS访问SQL Server

时间:2014-10-15 13:33:01

标签: sql-server ms-access sql-server-2012 ms-access-2010 sql-date-functions

我正在从exisitng表A创建一个表B.在表A中,我有一个ValDate列,它是varchar并包含Date。当我尝试创建表B时,我在查询中使用了一个函数,如下所示,我得到转换错误。表A也包含空值。 MS Access:

((DateDiff("d",Date(),format(Replace(Replace([Table A].ValDate,".","/"),"00/00/0000","00:00:00"),"dd/mm/yyyy")))>0)).

表在MS Access中,正在迁移到SQL Server 2012。

SQL Server:

((DATEDIFF(day,FORMAT( GETDATE(), 'dd-MM-yyyy', 'en-US' ),FORMAT( ValDate, 'dd-MM-yyyy', 'en-US' ))>0)) 

((DateDiff(day,GETDATE(),Format(Replace(Replace([TableA].[ValidFrom],'.','/'),'00/00/0000','00:00:00'),'dd/mm/yyyy')))

我尝试使用转换,格式和转换等几种方法转换日期,但最终得到的错误如下所示。

Msg 8116, Level 16, State 1, Line 1 Argument data type date is invalid for argument 1 of isdate function.

我真的很感激有人告诉我这里缺少什么。

1 个答案:

答案 0 :(得分:1)

由于您在字符串字段中有日期数据,因此很可能您的某些值对您的预期日期格式无效。

复制sql server表中的数据,然后检查并验证字符串字段的内容。

查看函数try_convert,在检查包含日期值的字符串字段的内容时可能会有所帮助。

当排除不良数据时,您可以再次申请您的公式(希望)不同的结果 更好的解决方案是创建一个具有适当数据类型的单独字段,以存储从字符串字段转换的日期值,并将您的逻辑应用于该字段。