当前时间查询
SELECT SYSDATE FROM dual; -- 当前系统日期和时间
SELECT CURRENT_DATE FROM dual; -- 当前会话时区的日期
SELECT CURRENT_TIMESTAMP FROM dual; -- 当前会话时区的时间戳
特定格式显示时间
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM dual;
查询今天的数据
SELECT * FROM table_name
WHERE date_column >= TRUNC(SYSDATE)
AND date_column < TRUNC(SYSDATE) + 1;
查询昨天数据
SELECT * FROM table_name
WHERE date_column >= TRUNC(SYSDATE) - 1
AND date_column < TRUNC(SYSDATE);
查询本周数据
SELECT * FROM table_name
WHERE date_column >= TRUNC(SYSDATE, 'IW')
AND date_column < TRUNC(SYSDATE, 'IW') + 7;
查询本月数据
SELECT * FROM table_name
WHERE date_column >= TRUNC(SYSDATE, 'MM')
AND date_column < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 1);
加减天数
SELECT SYSDATE + 1 FROM dual; -- 明天此时
SELECT SYSDATE - 7 FROM dual; -- 一周前
加减月份
SELECT ADD_MONTHS(SYSDATE, 3) FROM dual; -- 3个月后
SELECT ADD_MONTHS(SYSDATE, -6) FROM dual; -- 6个月前
计算两个日期之间的天数
SELECT date1 - date2 FROM dual;
计算两个日期之间的月份
SELECT MONTHS_BETWEEN(date1, date2) FROM dual;
提取日期部分
SELECT EXTRACT(YEAR FROM SYSDATE) FROM dual;
SELECT EXTRACT(MONTH FROM SYSDATE) FROM dual;
SELECT EXTRACT(DAY FROM SYSDATE) FROM dual;
获取日期中的特定部分
SELECT TO_CHAR(SYSDATE, 'YYYY') FROM dual; -- 年
SELECT TO_CHAR(SYSDATE, 'MM') FROM dual; -- 月
SELECT TO_CHAR(SYSDATE, 'DD') FROM dual; -- 日
四舍五入日期
SELECT ROUND(SYSDATE, 'YEAR') FROM dual; -- 按年四舍五入
SELECT ROUND(SYSDATE, 'MONTH') FROM dual; -- 按月四舍五入
截断日期
SELECT TRUNC(SYSDATE, 'YEAR') FROM dual; -- 截断到年初
SELECT TRUNC(SYSDATE, 'MONTH') FROM dual; -- 截断到月初
时区转换
SELECT FROM_TZ(CAST(SYSDATE AS TIMESTAMP), 'America/New_York') FROM dual;
SELECT NEW_TIME(SYSDATE, 'GMT', 'PST') FROM dual;
获取时区信息
SELECT DBTIMEZONE FROM dual; -- 数据库时区
SELECT SESSIONTIMEZONE FROM dual; -- 会话时区
查询过去30分钟内的记录
SELECT * FROM table_name
WHERE date_column >= SYSDATE - INTERVAL '30' MINUTE;
查询上个月的同一天
SELECT ADD_MONTHS(SYSDATE, -1) FROM dual;
查询本季度数据
SELECT * FROM table_name
WHERE date_column >= TRUNC(SYSDATE, 'Q')
AND date_column < ADD_MONTHS(TRUNC(SYSDATE, 'Q'), 3);
查询工作日(排除周末)
SELECT * FROM table_name
WHERE TO_CHAR(date_column, 'D') NOT IN ('1', '7');
这些查询语句涵盖了Oracle中大部分常用的时间相关操作,可以根据实际需求进行调整和组合使用。