我该怎么做:
select *
from tableName
where SESSION_START_DATE_TIME > To_Date ('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi' )
SESSION_START_DATE_TIME的格式为'12 / 01/2012 13:16:32.000'
我尝试了where To_Date (SESSION_START_DATE_TIME, 'DD-MON-YYYY hh24:mi') > To_Date ('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi' )
但无论我尝试什么,我都会收到错误:
SQL command not properly formed
答案 0 :(得分:7)
在您提供的示例中,没有任何内容会引发SQL command not properly formed
错误。你是如何执行这个查询的?你有什么不向我们展示的?
此示例脚本运行正常:
create table tableName
(session_start_date_time DATE);
insert into tableName (session_start_date_time)
values (sysdate+1);
select * from tableName
where session_start_date_time > to_date('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi');
就像这个例子一样:
create table tableName2
(session_start_date_time TIMESTAMP);
insert into tableName2 (session_start_date_time)
values (to_timestamp('01/12/2012 16:01:02.345678','mm/dd/yyyy hh24:mi:ss.ff'));
select * from tableName2
where session_start_date_time > to_date('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi');
select * from tableName2
where session_start_date_time > to_timestamp('01/12/2012 14:01:02.345678','mm/dd/yyyy hh24:mi:ss.ff');
所以一定有别的东西是错的。
答案 1 :(得分:5)
如果SESSION_START_DATE_TIME的类型为TIMESTAMP,您可能想尝试使用SQL函数TO_TIMESTAMP。这是一个例子:
SQL> CREATE TABLE t (ts TIMESTAMP);
Table created.
SQL> INSERT INTO t
2 VALUES (
3 TO_TIMESTAMP (
4 '1/12/2012 5:03:27.221008 PM'
5 ,'mm/dd/yyyy HH:MI:SS.FF AM'
6 )
7 );
1 row created.
SQL> SELECT *
2 FROM t
3 WHERE ts =
4 TO_TIMESTAMP (
5 '1/12/2012 5:03:27.221008 PM'
6 ,'mm/dd/yyyy HH:MI:SS.FF AM'
7 );
TS
-------------------------------------------------
12-JAN-12 05.03.27.221008 PM
答案 2 :(得分:1)
这样说吧
where ("R"."TIME_STAMP">=TO_DATE ('03-02-2013 00:00:00', 'DD-MM-YYYY HH24:MI:SS')
AND "R"."TIME_STAMP"<=TO_DATE ('09-02-2013 23:59:59', 'DD-MM-YYYY HH24:MI:SS'))
其中
R是表名。
TIME_STAMP是表R中的FieldName。
答案 3 :(得分:0)
显然'12 / 01/2012 13:16:32.000'与'DD-MON-YYYY hh24:mi'格式不匹配。
更新
您需要'MM / DD / YYYY hh24:mi:ss.ff'格式并使用TO_TIMESTAMP而不是TO_DATE导致日期在oracle中不能保留毫秒。
答案 4 :(得分:0)
尝试:
To_Date (SESSION_START_DATE_TIME, 'MM/DD/YYYY hh24:mi') >
To_Date ('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi' )