日期转换问题MS访问SQL Server(Date Conversion Issue MS Acce

2019-10-29 21:37发布

我从exisitng表A.在表AI创建表B有一列ValDate这是VARCHAR,包含日期。 当我尝试创建表BI在查询中使用的功能下面给出我得到一个转换错误。 表A中包含空值也是如此。 MS访问:

((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服务器:

((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.

我真的很感激有人告诉我什么,我在这里失踪。

Answer 1:

因为你有一个字符串字段日期数据很可能你有一定的价值,是不是对你的预期日期格式有效。

复制数据的SQL Server表,然后执行字符串字段的内容的检查和验证。

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

错误数据时排除了,你可以再次申请使用(希望)不同的结果公式。
一个更好的解决办法是创建具有适当数据类型的单独的字段来存储从字符串转换领域的日期值和你的逻辑适用于这一领域。



文章来源: Date Conversion Issue MS Access to SQL Server