2012-01-12 16 views
8

Yapabileceğim Bu nasıl:Oracle: Bir de tarih ve saate göre filtre uygulamak için nasıl nerede fıkra

select * 
from tableName 
where SESSION_START_DATE_TIME > To_Date ('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi') 

SESSION_START_DATE_TIME formatında/2012 13 '12/01: 32.000'

: 16 Ben where To_Date (SESSION_START_DATE_TIME, 'DD-MON-YYYY hh24:mi') > To_Date ('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi')

çalıştı ama ben denemek ne olursa olsun ben hatayı alıyorum: Açıkçası SQL command not properly formed

+1

"SESSION_START_DATE_TIME" alanı DATETIME veya VARCHAR mı? – MatBailie

+0

Bize göstermediğiniz SQL deyiminin parçaları var mı? – wweicker

+0

'DESC TABLENAME;'? Sorgunuz, "TIMESTAMP" –

cevap

0

'12 13/2012/01: 16: 32,000' eşleşmiyor 'DD-MO N-YYYY hh24: mi 'biçimi.

Güncelleme:

Sen 'MM/GG/YYYY HH24: mil: ss.ff' ihtiyaç biçimini ve oracle Geçen Mili tutmayın TO_TIMESTAMP yerine TO_DATE nedeni tarihlerini kullanmak.

+0

yip, bu yüzden gönderiimde ikinci yolu denedim. Sadece düşünebileceğim herşeyi deniyorum! – Bob

+0

Cevabı güncelledim. – Vadzim

0

deneyin: Bir SQL command not properly formed hata atmak olacaktır şey yok sağladık örnekte

To_Date (SESSION_START_DATE_TIME, 'MM/DD/YYYY hh24:mi') > 
To_Date ('12-Jan-2012 16:00', 'DD-MON-YYYY hh24:mi') 
+0

aynı hatadan korkuyorum – Bob

5

. Bu sorguyu nasıl yürütüyorsunuz? Bize neyi göstermiyorsun?

Bu örnek komut çalışıyor:

bu örneği yaptığı gibi
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'); 

Böylece yanlış başka bir şey olmalı.

5

SESSION_START_DATE_TIME TIMESTAMP türündeyse, TO_TIMESTAMP SQL işlevini kullanmayı deneyebilirsiniz. İşte bir örnek:

 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 
0

o R tablo adıdır bu şekilde

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')) 

koyun.
TIME_STAMP, Tablo R'de FieldName'dir.

İlgili konular