MS Access SQL - 比较常规日期和短期日期



我需要比较2种不同的日期类型(一般日期短期日期(。

我尝试使用FORMAT((来获取转换后的日期,但你不能在 WHERE 子句中使用它。

"SELECT DT, Item, N, InvoiceNum, FORMAT(DT, 'Short Date') as DT_SD FROM itemHistory WHERE DT_SD='#" & selectedDate & "#')"

您不能在 where 中使用别名,因为您的别名会在您的选择中使用。除非您包装到子查询

原因:

其中:评估条件并删除不匹配的行

因此,您的where语句被视为您的行而不是您的别名。请改用完整的表达式,如@Rene所述。

"SELECT DT, Item, N, InvoiceNum FROM itemHistory 
WHERE FORMAT(DT, 'Short Date') = #" & selectedDate & "#)"

您应该始终将日期处理为日期,而不是文本。

对于 Access SQL,您必须对日期值使用格式正确的字符串表达式

"SELECT DT, Item, N, InvoiceNum FROM itemHistory WHERE DateDiff('d', DT, #" & Format(selectedDate, "yyyy/mm/dd") & "#) = 0"

如果 DT 从未包含时间值,则可以将其减少为:

"SELECT DT, Item, N, InvoiceNum FROM itemHistory WHERE DT = #" & Format(selectedDate, "yyyy/mm/dd") & "#"

如果您在字段 DT 上有索引,这将运行得更快。

最新更新