Microsoft Access 2016 查询为链接表中的空日期返回 1/1/1800

Posted

技术标签:

【中文标题】Microsoft Access 2016 查询为链接表中的空日期返回 1/1/1800【英文标题】:Microsoft Access 2016 Query Returns 1/1/1800 for Null Dates in Linked Table 【发布时间】:2017-06-13 18:46:22 【问题描述】:

我有一个带有链接表的 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 时,此查询返回 null。如果我省略 WHERE 子句,空 dbo_WTSI_Jobs.CompletedDate 值是空字符串。

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

【问题讨论】:

听起来它们实际上不是NULL 值,它们是空字符串。尝试将空字符串转换为日期时,您将获得可能的最短日期。你可以试试SWITCH(dbo_WTSI_Jobs.CompletedDate = "", NULL)。类似的东西会为该列返回一个实际的 NULL 值。 你是对的,它们不为空。此表达式返回 false:Expr1: IsNull([dbo_WTSI_Jobs].[CompletedDate])。我不熟悉 SWITCH 函数,但以下解决了我的问题: CompletedDateCalc: IIf([CompletedDate]=#1/1/1800#,"",[CompletedDate])。顺便说一句,数据类型是日期时间。感谢大家的帮助。 【参考方案1】:

将字段的数据类型更改为日期时间。

【讨论】:

不会还有问题吗?它仍然会将空字符串转换为1/1/1800,这次只存储在数据库中。 如果数据类型是DateTime,则不能接收日期1800-01-01作为默认日期或“空”日期;在 Access 中,即 1899-12-30。【参考方案2】:

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

【讨论】:

以上是关于Microsoft Access 2016 查询为链接表中的空日期返回 1/1/1800的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Access 表单查询

使用传递查询中的数据更新 Microsoft Access 2013 表

Microsoft Access SQL 查询中的字符串连接问题

Microsoft Access 元数据?

宏 - 查询 - Microsoft Access 数据库引擎停止了进程

Microsoft Access 查询结果为空