-- 判断周几:每周的第一天为星期天,星期一为第二天,所以要减一
SELECT to_char(SYSDATE, 'D') - 1 FROM dual;
-- 直接输出今日周几
SELECT to_char(sysdate, 'day') FROM dual;
-- 判断特定日期是星期几
select to_char(to_date('2023-11-11', 'YYYY-MM-DD'), 'DY') from dual;
-- 输出特定日期的月份、年份
SELECT to_char(to_date('2023-11-11', 'YYYY-MM-DD'), 'MM') 当前月份,
to_char(to_date('2023-11-11', 'YYYY-MM-DD'), 'YYYY') 当前年份
FROM dual;
SELECT trunc(SYSDATE, 'DD') 今天的开始,
trunc(SYSDATE, 'iw') 这周的第一天,
trunc(SYSDATE, 'MM') 这个月的第一天,
trunc(SYSDATE, 'q') 这个季度的第一天,
trunc(SYSDATE, 'YYYY') 今年第一天,
extract(day from last_day(sysdate)) 当月天数
FROM dual;
3.3 两个时间的时间差
sql复制代码
SELECT TIME 具体相差时间,
floor(TIME) 相差天数,
CASE
WHEN TIME < 1 THEN
trunc(TIME * 24)
WHEN TIME > 1 THEN
MOD(trunc(TIME * 24), 24)
ELSE
0
END AS 小时差,
trunc(TIME * 24 * 60 - 60 * trunc(TIME * 24)) 分钟差,
trunc(TIME * 24 * 60 * 60 - 60 * trunc(TIME * 24 * 60)) 秒差
FROM (SELECT to_number(SYSDATE - to_date('1999-02-22 20:20:20', 'YYYY-MM-DD hh24:mi:ss')) AS TIME
FROM dual)