Sql server 对于链接表中的空日期,Microsoft Access 2016查询返回1/1/1800

Sql server 对于链接表中的空日期,Microsoft Access 2016查询返回1/1/1800,sql-server,azure,ms-access,ms-access-2016,Sql Server,Azure,Ms Access,Ms Access 2016,我有一个带有链接表的Access 2016数据库。它们链接到Azure SQL数据库。当我在Access查询中包含该表时,空日期显示为1/1/1800。如果我只是在Access中打开表,空日期为空。以下是查询: SELECT dbo_WTSI_Jobs.Id, dbo_WTSI_Jobs.JobNo, dbo_WTSI_Jobs.CreatedDate, dbo_WTSI_Jobs.CompletedDate FROM dbo_WTSI_Jobs WHERE (((dbo_WTSI_Jobs.C

我有一个带有链接表的Access 2016数据库。它们链接到Azure SQL数据库。当我在Access查询中包含该表时,空日期显示为1/1/1800。如果我只是在Access中打开表,空日期为空。以下是查询:

SELECT dbo_WTSI_Jobs.Id, dbo_WTSI_Jobs.JobNo, dbo_WTSI_Jobs.CreatedDate, dbo_WTSI_Jobs.CompletedDate
FROM dbo_WTSI_Jobs
WHERE (((dbo_WTSI_Jobs.CreatedDate)>#1/1/2017#));
当dbo_WTSI_Jobs.CompletedDate为空时,此查询将其返回为1/1/1800。如果省略WHERE子句,则null dbo_WTSI_Jobs.CompletedDate值为空字符串


如何防止查询返回1/1/1800?

将字段的数据类型更改为datetime。

以下解决了我的问题:CompletedDateCalc:IIf([CompletedDate]=#1/1/1800#,“”,[CompletedDate])。

听起来它们实际上不是
NULL
值,它们是空字符串。当尝试将空字符串转换为日期时,您将获得可能的最小日期。您可以尝试类似于
开关(dbo\u WTSI\u Jobs.CompletedDate=“”,NULL)
。类似的东西会为该列返回一个实际的
NULL
值。此表达式返回false:Expr1:IsNull([dbo_WTSI_Jobs].[CompletedDate])。我不熟悉开关函数,但以下解决了我的问题:CompletedDateCalc:IIf([CompletedDate]=#1/1/1800#,“”,[CompletedDate])。顺便说一下,数据类型是datetime。谢谢大家的帮助。这个问题不是还存在吗?它仍然会将空字符串转换为
1/1/1800
,这一次只存储在DB中。如果数据类型为DateTime,则您不能将日期1800-01-01作为默认日期或“空”日期接收;在Access中,即1899-12-30。