Добре, мисля, че те хванах. Искате ли да направите следното?
select <columns>
from my_table
where state_date <= <some date>
and state_time <= <some time>
Доста необичайно е да се интересувате от милисекунди, но ако го правите, трябва да използвате systimestamp
.
Съдейки по факта, че сте разделили дата и час, това са знаци, така че ще трябва да отгатна форматни маски
. Ако грешат, връзката трябва да ви насочи какво да правите. Между другото, не е разумно да разделяте среща по този начин. Можете да създадете колона, като използвате timestamp
тип данни във вашата таблица, което ще направи проблема ви изключително прост.
Така че не знам защо избрахте 'Day'
формат за вашата заявка, но с този <some date>
става to_char(sysdate, 'DAY')
.
От вашия коментар по-долу <some date>
ще бъде to_char(sysdate, 'DD-MON-YY')
<some time>
ще бъде to_char(systimestamp,'HH24:MI:SS:FF3')
, което ще ви даде клеймото за време до милисекунда, въпреки че типът данни може да достигне до микросекунда.
Изглежда ми малко странно, но вашата заявка тогава ще стане:
select <columns>
from my_table
where state_date <= to_char(sysdate, 'DD-MON-YY')
and state_time <= to_char(systimestamp,'HH24:MI:SS:FF3')
Би било по-нормално, ако съхранявате дата като низ, да я съхранявате във формат yyyymmdd
така че поне можете да гарантирате, че е наред. Ако сте правили нещо подобно, просто променете маската на формата. Ако не сте го направили, тогава тези заявки няма да работят по предназначение.
Лично ако исаш за съхраняване на данни по този начин и приемайки state_date
се съхранява като, да речем, dd-mon-yy
, т.е. включително година, месец И ден и state_time
се съхранява, както е посочено по-горе, тогава бих направил нещо подобно:
select <columns>
from my_table
where to_timestamp(state_date || state_time, 'DD-MON-YYHH24:MI:SS:FF3')
<= systimestamp
Това прави много по-очевидно какво се случва и няма неяснота какво <
означава в тази ситуация, че датата винаги ще бъде по-малка от бъдеща дата, което не е непременно вярно за низове.
Надявам се, че това има смисъл.