20

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

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

4

5 回答 5

26

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

SELECT extract(hour from current_timestamp) 
FROM dual
于 2011-05-12T14:53:29.727 回答
22
 SELECT to_number(to_char(sysdate, 'HH24')) FROM DUAL
于 2011-05-12T14:13:01.453 回答
3

我想这就是你要找的

select to_char(current_timestamp,'HH24') from dual;
于 2017-09-15T04:45:25.613 回答
1

在 oracle 中使用 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;    
于 2012-03-29T08:21:57.317 回答
-1

如果您想获取日期的月份名称

select to_char( 'month', sysdate())
于 2019-06-10T16:26:14.760 回答