我正在为MS Access编写SQL查询。
这两个字段是DateTime。开始/结束时间是22:30/6:30
当我运行以下查询时
SELECT cDate(Format(table1.BeginTime,"hh:mm")),
我得到晚上10:30而不是22:30。我不想转换为12小时格式。如何保留Miliary时间格式?
答案 0 :(得分:2)
所以我在Access 2013中尝试了一些东西,似乎@Bjones有一点意义。
在SQL Server Format
中是一个clr .net函数,format(date, 'hh:mm')
将是12小时,Format(date, 'HH:mm')
将是24小时。
但正如@Bjones指出的那样,可能存在一些问题,即您的原始列如何作为文本或日期或时间保存.....我在尝试后得出的结论是您的功能顺序错误。
cDate(Format(table1.BeginTime,"HH:mm"))
cDate
会将内容转换为日期,但不会对其进行格式化。
所以
FORMAT(cDate(table1.BeginTime), "hh:mm")
或
FORMAT(cDate(table1.BeginTime), "HH:mm")
或
FORMAT(cDate(table1.BeginTime), "Short Time")
如果时间存储为文本,应该给你想要的东西。如果存储为日期时间,您可以将cDate全部放在一起并保持
FORMAT(table1.BeginTime, "Short Time")
@Bjones回答。
答案 1 :(得分:0)
我认为您需要摆脱的是cDate函数,因为您的字段已经是DateTime格式。
SELECT Format(table1.BeginTime,"hh:nn")
答案 2 :(得分:0)
您不知道该查询的结果是什么。
如果您需要日期值并以24小时格式查看,请使用:
Select table1.BeginTime
并为 h:nn 或 hh:nn
列应用Format属性如果您需要以24小时格式格式化为字符串的日期,请使用:
Select Format(table1.BeginTime, "hh:nn")
并且不需要格式化。
在任何情况下,即使格式字符串h: mm 可以使用,也可以使用h: nn 或hh: nn , m 适用于本月。