MS Access SQL-比较一般日期和短日期

时间:2018-10-16 23:36:46

标签: sql ms-access ms-access-2010

我需要比较2种不同的日期类型(常规日期短日期)。

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

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

2 个答案:

答案 0 :(得分:1)

您不能在您的位置使用别名,因为您的别名在您的选择中使用。除非您包装了子查询

原因:

  

位置:评估条件并删除不匹配的行

因此,您的where语句将您的行视为别名,而不是您的行。使用完整的表达式代替@Rene所述。

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

答案 1 :(得分:0)

您应该始终将日期作为日期而非文本处理。

对于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上有索引,它将运行得更快。