我需要一个类似下表的查询输出; 这是表的主要条目,这些记录将由我无法控制的第三方程序修改。任何人都可以推荐一个好的样品吗?
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
。
答案 0 :(得分:1)
如果您希望它是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
答案 1 :(得分:0)
您可以取消DATE_ADD和TO_DATE函数(SYSDATE已经是DATE,不需要转换),并且还使用mi
来显示分钟而不是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
答案 2 :(得分:-1)
我不清楚你要从上面的查询中实现什么,但如果括号是你唯一的问题那么你必须点击查询:
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