繁体   English   中英

Oracle SQL查询中的开始/结束日期和时间

[英]start/end date and time in oracle sql query

我需要一个查询输出,如下表所示; 这是表的主要条目,这些记录将由我无法控制的第三方程序修改。 谁能建议一个好的样品?

ID | DATEIN              | DATEOUT            | STATUS
 1   02.02.2014 00:00:00   02.02.2014 23:59:59     1
 2   03.02.2014 00:00:00   03.02.2014 23:59:59     0

我试过了

SELECT To_Char(To_Date(SYSDATE), 'dd-MM-yyyy hh:mm:ss PM'), 
       To_Char(date_add(To_Date(SYSDATE +1), INTERVAL -1 SECOND), 'dd-MM-yyyy hh:mm:ss PM') 
FROM dual 

但是此查询引发错误ORA-00907: missing right parenthesis

如果您希望将其设置为24小时格式,则无需PM 并注意几分钟,它是mi ,而不是查询中的mm 同样,正如已经提到的那样,无需将SYSDATE转换为日期,因为它已经是该数据类型:

SELECT to_char(to_date(SYSDATE), 'dd-mm-yyyy HH24:mi:ss') date_in,
       to_char(to_date(SYSDATE + 1) - INTERVAL '1' SECOND, 'dd-mm-yyyy HH24:mi:ss') date_out
  FROM dual;

DATE_IN             DATE_OUT
------------------- -------------------
11-03-2014 00:00:00 11-03-2014 23:59:59

您可以取消使用DATE_ADD和TO_DATE函数(SYSDATE已经是DATE,无需进行转换),还可以使用mi来显示分钟而不是mm ,而mm是月份的格式说明符,如下所示:

SELECT To_Char(SYSDATE, 'dd-MM-yyyy hh:mi:ss PM'),
       To_Char((SYSDATE + 1) + INTERVAL '-1' SECOND, 'dd-MM-yyyy hh:mi:ss PM')
FROM dual

我不清楚您想从上述查询中实现什么,但是如果括号是您唯一的问题,那么您必须执行以下查询:

SELECT To_Char(To_Date((SYSDATE), 'dd-MM-yyyy hh:mm:ss PM')), 
   To_Char(date_add(To_Date(SYSDATE +1), INTERVAL -1 SECOND), 'dd-MM-yyyy hh:mm:ss PM') 
FROM dual 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM