DATE
тип данных не содержит никакой информации о часовом поясе.Вместо этого используйте TIMESTAMP WITH TIME ZONE
, т.е. to_timestamp_tz('2011-07-30 00:00:00+00:00','yyyy-mm-dd HH24:MI:SS+TZH:TZM')
DELETE FROM mySchema.mytable
WHERE myCol= 'abc'
and DATE_TIME_UTC >= to_timestamp_tz('2011-07-30 00:00:00+00:00','yyyy-mm-dd HH24:MI:SS+TZH:TZM')
and DATE_TIME_UTC <= to_timestamp_tz('2011-07-31 23:55:00+00:00','yyyy-mm-dd HH24:MI:SS+TZH:TZM')
Однако я предполагаю, что DATE_TIME_UTC
является значением DATE
, а не TIMESTAMP WITH TIME ZONE
.В этом случае вы должны преобразовать значение вашей временной метки в UTC следующим образом:
DELETE FROM mySchema.mytable
WHERE myCol= 'abc'
and DATE_TIME_UTC >= SYS_EXTRACT_UTC(to_timestamp_tz('2011-07-30 00:00:00+00:00','yyyy-mm-dd HH24:MI:SS+TZH:TZM'))
and DATE_TIME_UTC <= SYS_EXTRACT_UTC(to_timestamp_tz('2011-07-31 23:55:00+00:00','yyyy-mm-dd HH24:MI:SS+TZH:TZM'))
или вы можете сделать это наоборот (скорее всего, с меньшей производительностью):
DELETE FROM mySchema.mytable
WHERE myCol= 'abc'
and FROM_TZ(DATE_TIME_UTC, 'UTC') >= to_timestamp_tz('2011-07-30 00:00:00+00:00','yyyy-mm-dd HH24:MI:SS+TZH:TZM')
and FROM_TZ(DATE_TIME_UTC, 'UTC') <= to_timestamp_tz('2011-07-31 23:55:00+00:00','yyyy-mm-dd HH24:MI:SS+TZH:TZM')
OfКонечно, поскольку все ваше время указано в UTC, вы можете упростить его, и вам вообще не нужно учитывать информацию о часовом поясе:
DELETE FROM mySchema.mytable
WHERE myCol= 'abc'
and DATE_TIME_UTC >= to_date('2011-07-30 00:00:00','yyyy-mm-dd HH24:MI:SS')
and DATE_TIME_UTC <= to_date('2011-07-31 23:55:00','yyyy-mm-dd HH24:MI:SS')
Но приведенные выше решения являются более общими.