我想在两个日期之间对查询结果进行排序。如何设置定义AM / PM的日期?
具体日期采用YYYY-mm-dd hh:mi
格式。
AND (cr.COMPLETED_DATE BETWEEN TO_DATE( :Start_Date , 'YYYY-mm-dd hh:mi') AND TO_DATE( :End_Date , 'YYYY-mm-dd hh:mi'))
我尝试输入大于12的数字(军事时间),但我收到此错误java.sql.SQLException: ORA-01849: hour must be between 1 and 12
有没有办法用YYYY-mm-dd hh:mi
日期格式指定上午/下午?
答案 0 :(得分:4)
请注意在日期格式规范中添加了24。这将允许您输入24小时时间:
AND (cr.COMPLETED_DATE BETWEEN TO_DATE( :Start_Date , 'YYYY-mm-dd hh24:mi') AND TO_DATE( :End_Date , 'YYYY-mm-dd hh24:mi'))
或者你也可以在这行中使用am / pm指示符:
AND (cr.COMPLETED_DATE BETWEEN TO_DATE( :Start_Date , 'YYYY-mm-dd hh:mi am') AND TO_DATE( :End_Date , 'YYYY-mm-dd hh:mi am'))
这是一种尝试检测要使用的两种格式中的哪种格式的方法。如果它在字符串中找到AM或PM,它将采用AM / PM指定,否则它将指示24小时表示法:
CASE
WHEN regexp_like( :START_DATE, '((AM)|(PM))','i')
THEN to_date(:START_DATE,'yyyy-mm-dd hh:mi am')
ELSE to_date(:START_DATE,'yyyy-mm-dd hh24:mi')
END
答案 1 :(得分:2)
不确定您或其他任何人是否有兴趣在MySQL中执行此操作,但如果您想:
AND (cr.COMPLETED_DATE BETWEEN DATE_FORMAT( :Start_Date, '%Y-%m-%d %h:%i %p' )
AND DATE_FORMAT( :End_Date, '%Y-%m-%d %h:%i %p')