MS Access Date() 没有结果
Posted
技术标签:
【中文标题】MS Access Date() 没有结果【英文标题】:MS Access Date() yields no results 【发布时间】:2018-07-10 15:09:56 【问题描述】:我已经搜索过,但无法弄清楚这一点。很多年前我曾经使用 MS Access,但现在主要转向 php 和 mysql 来完成我的工作。但是当我在工作时,我必须使用这些资源。
尝试构建从 ODBC 连接到 SQL Server 的基本查询。其中一列是日期字段(SQL 服务器字段类型:日期时间)。
当我构建查询并为我的 Where 子句输入 Date() 时,它应该不会产生任何结果。
SELECT dbo_Order.OrderStatusID,
dbo_Order.FillerOrderNumber,
dbo_Order.RelevantClinicalInfo,
dbo_Order.ReasonForStudy,
dbo_Order.ProcedureDescList,
dbo_Order.PlacerFld2 AS Modality,
dbo_Order.ScheduleDate,
dbo_Order.ExplorerStatus,
dbo_Order.SiteID
FROM dbo_Order
WHERE (
(
(dbo_Order.PlacerFld2) = "CRFL"
OR (dbo_Order.PlacerFld2) = "CT"
OR (dbo_Order.PlacerFld2) = "SAMR"
)
AND ((dbo_Order.ScheduleDate) = DATE ())
AND ((dbo_Order.ExplorerStatus) = "SCHEDULED")
AND ((dbo_Order.SiteID) = 1)
);
我也尝试过类似 Date: Format([ScheduleDate], "dd/mm/yyyy") 的操作,但这也不会返回任何结果。
MS Access 2016 SQL Server 2008
【问题讨论】:
这个查询是基于查询 ODBC 查询/链接表,还是 ODBC 查询本身?看起来它是一个 ODBC 查询,因此您不会使用 DATE(),因为它不是 SQL 函数(接收当前日期),请使用GETDATE()
您的 ScheduleDate 是否包含任何时间值。 Date() 默认返回 1/1/2018 00:00,因此如果您的预定日期是 1/1/2018 04:34:00,它将不匹配。尝试使用 DateValue([ScheduleDate]) 只返回日期。
尝试使用固定值:dbo_Order.ScheduleDate = #2018/07/10#
,当然使用表中存在的日期。这必须有效。
谢谢,@Minty 确实有效。我不知道要尝试,所以我今天学到了一些新东西。
【参考方案1】:
如果您的 ScheduleDate 包含任何时间值,则 Date() 默认返回 2018 年 1 月 1 日 00:00,因此如果您的计划日期是 2018 年 1 月 1 日 04:34:00,它将不匹配。
尝试使用 DateValue([ScheduleDate]) 只返回日期
【讨论】:
【参考方案2】:我更喜欢:
dbo_Order.ScheduleDate >= Date() AND dbo_Order.ScheduleDate < Date() + 1
DateValue([ScheduleDate])
必须在每一行上计算,并且不能使用索引(如果有的话),这会影响对大量数据的查询性能。见Access query won't work when dates have times另外DateValue不能处理NULL值。
【讨论】:
以上是关于MS Access Date() 没有结果的主要内容,如果未能解决你的问题,请参考以下文章