【发布时间】:2011-10-20 01:32:29
【问题描述】:
使用表达式生成器,我构建了一个如下所示的 switch 语句:
Switch([Time]>=#12:00:00 AM# And [Time]<#7:00:00 AM#,"Before 7 am",
[Time]>=#7:00:00 AM# And [Time]<#10:00:00 AM#,"7 am - 9:59 am",
[Time]>=#10:00:00 AM# And [Time]<#5:00:00 PM#,"10 am - 4:59 pm",
[Time]>=#5:00:00 PM# And [Time]<=#9:00:00 PM#,"5 pm - 9 pm",
[Time]>#9:00:00 PM# And [Time]<#11:59:00 PM#,"After 9 pm")
但是,我注意到我的查询不正常,所以我检查了 SQL。奇怪的是,它看起来像这样:
Switch([Time]>=#12/30/1899# And [Time]<#12/30/1899 7:0:0#,"Before 7 am",
[Time]>=#12/30/1899 7:0:0# And [Time]<#12/30/1899 10:0:0#,"7 am - 9:59 am",
[Time]>=#12/30/1899 10:0:0# And [Time]<#12/30/1899 17:0:0#,"10 am - 4:59 pm",
[Time]>=#12/30/1899 17:0:0# And [Time]<=#12/30/1899 21:0:0#,"5 pm - 9 pm",
[Time]>#12/30/1899 21:0:0# And [Time]<#12/30/1899 23:59:0#,"After 9 pm")
AS Time_Range
所以,看起来 Access 正在将这些转换为日期/时间值,但我只需要时间。有没有办法做到这一点?
【问题讨论】:
-
为此编写一个自定义函数怎么样?我认为它会更干净。至于您的问题,实际上没有不包含某种日期部分的日期/时间之类的东西。您可能会考虑组合您的日期字段(假设您有一个),以便日期正确。理想情况下,我建议将日期和时间放在同一字段中,并为其命名,而不是 MS Access 或您正在使用的 RDBMS 中的保留字,可能类似于 DateTimeEntered。