Эквивалент Oracle для SQL Server DATEPART

Нам нужно получить HOUR из столбца DATETIME (ожидая возврата значений от 0 до 23).

Существует ли эквивалент функции SQL Server DATEPART в Oracle?


person Raj More    schedule 12.05.2011    source источник


Ответы (4)


Альтернативой является функция EXTRACT, которая является стандартом ANSI и также работает с другими СУБД, но также требует использования current_timestamp (также ANSI) вместо sysdate.

SELECT extract(hour from current_timestamp) 
FROM dual
person a_horse_with_no_name    schedule 12.05.2011
comment
почему-то люди не любят экстракт. но, я нахожу это очень простым и элегантным. - person clq; 15.10.2015

Я думаю, это то, что вы ищете

select to_char(current_timestamp,'HH24') from dual;
person Ranjith M R    schedule 15.09.2017

для дополнительных способов использования функции типа DATEPART в оракуле

DATEPART: – День недели

-- Это дало бы день недели для исходного дня начала

DECLARE
Start_day date:=to_date('30-03-2012','DD-MM-YYYY');
check_date DATE:=SYSDATE;
Day_of_week NUMBER;
i NUMBER;
BEGIN
i:=to_char(Start_day,'D');
day_of_week:=mod((to_char(check_date,'D') -(i-1)+7),7);
if day_of_week=0
THEN
day_of_week:=7;
end if;
dbms_output.put_line(day_of_week);
END;    
person psaraj12    schedule 29.03.2012

если вы хотите получить название месяца даты

select to_char( 'month', sysdate())
person Alvaro    schedule 10.06.2019