Oracle相当于SQL Server的DATEPART

22

我们需要从DATETIME列中获取HOUR(期望返回0到23的值)。

是否有Oracle等效的SQL Server DATEPART函数?

5个回答

29

另一种选择是使用EXTRACT函数,它是ANSI标准,在其他DBMS上也适用,但它需要使用current_timestamp(也是ANSI标准)而不是sysdate。

SELECT extract(hour from current_timestamp) 
FROM dual

1
由于某些原因,人们不喜欢使用extract。但是我觉得它非常简单和优雅。 - clq

23
 SELECT to_number(to_char(sysdate, 'HH24')) FROM DUAL

3
我认为这就是你要找的内容。
select to_char(current_timestamp,'HH24') from dual;

1

关于在Oracle中使用DATEPART函数的其他方法

DATEPART:-Weekday

--这将为参考起始日的一周中的日期提供日期

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;    

-1

如果你想获取一个日期的月份名称

select to_char( 'month', sysdate())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接