Oracle SQL: znaczniki czasu w klauzuli where

Muszę poszukać wierszy, które mieszczą się w określonym przedziale czasowym.

select * 
from TableA 
where startdate >= '12-01-2012 21:24:00' 
  and startdate <= '12-01-2012 21:25:33'

Tzn. wyszukaj wiersze z dokładnością znacznika czasu w sekundach, jak to osiągnąć?

Author: Alex.K., 2012-01-13

1 answers

Musisz użyć to_timestamp (), aby przekonwertować łańcuch znaków na odpowiednią wartość znacznika czasu:

to_timestamp('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')

Jeśli twoja kolumna jest typu DATE (który obsługuje również seconds), musisz użyć to_date ()

to_date('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')

Aby uzyskać warunek where, użyj następującego:

select * 
from TableA 
where startdate >= to_timestamp('12-01-2012 21:24:00', 'dd-mm-yyyy hh24:mi:ss')
  and startdate <= to_timestamp('12-01-2012 21:25:33', 'dd-mm-yyyy hh24:mi:ss')

Nigdy nie musisz używać to_timestamp() na kolumnie typu "timestamp"

edycja poprawiona literówka

 80
Author: a_horse_with_no_name,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-28 16:15:41