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 2013 表
Microsoft Access SQL 查询中的字符串连接问题