oracle中如何查询特定日期?

select last_day(to_date('20230101','YYYYMMDD')) from dual;

select last_day(to_date(V_END_DATE,'YYYYMMDD')) from dual; --查询任意一天 当月的最后一天

select to_char(to_date('20230101','YYYYMMDD')-1,'YYYYMMDD') INTO V_START_DATE FROM DUAL;

select to_char(to_date(V_END_DATE,'YYYYMMDD')-1,'YYYYMMDD') INTO V_START_DATE FROM DUAL; --查询任意一天的前一天

--字符型转日期型 -1 之后再转字符型

select to_char(last_day(add_months(SYSDATE, -2)) + 1,'yyyymmdd') First_DayOfMonth from dual; --查询上一个月第一天

select to_char(last_day(add_months(SYSDATE, -1)),'yyyymmdd') Last_DayOfMonth from dual; --查询上一个月最后一天

select to_number(add_months(trunc(to_date(V_FIRST_DAY,'yyyymmdd'), 'mm'), 1) - trunc(to_date(V_FIRST_DAY,'yyyymmdd'), 'mm')) into from dual; --指定月份天数,V_FIRST_DAY为那个月份任意一天

查询指定月份/年份/日期的第一天和最后一天

SELECT TO_CHAR(TRUNC(TO_DATE('2018-06','YYYY-MM'), 'MM'), 'YYYY-MM-DD') "指定日期第一天" FROM DUAL;

SELECT TO_CHAR(LAST_DAY(TO_DATE('2018-06','YYYY-MM')), 'YYYY-MM-DD') "指定日期最后一天" FROM DUAL;

--年

select trunc(sysdate, 'yy') "当年第一天" from dual;

select trunc(sysdate, 'yyyy') "当年第一天" from dual;

select trunc(sysdate, 'year') "当年第一天" from dual;

--季度

select trunc(sysdate, 'q') "当前季度的第一天" from dual;

select trunc(add_months(sysdate,3), 'Q') -1/24 "这个季度最后一天23点" from dual;

--月

select trunc(sysdate, 'mm') "当月第一天" from dual;

select trunc(sysdate, 'month') "当月第一天" from dual;

select trunc(last_day(sysdate)+1) "下个月第一天的0点" from dual;

--周

select trunc(sysdate, 'd') "本周的第一天,周日起" from dual;

select trunc(sysdate,'day') "本周的第一天,周日起" from dual;

select next_day(TRUNC(SYSDATE ), 'TUESDAY' ) + 12/24 "下个星期二中午12点" from dual;

select TRUNC(LEAST(NEXT_DAY(SYSDATE, 'SATURDAY'), NEXT_DAY(SYSDATE, 'SUNDAY'))) + (6*60+10)/(24*60) "下个周六日早上6点10分" from dual;

--天

select trunc(sysdate+1) "今晚12点" from dual;

select trunc(sysdate+1) + (8*60+30)/(24*60) "明天早上8点30分" from dual;

--时

select trunc(sysdate, 'hh')"当前小时" from dual;

select trunc(sysdate, 'hh24') "当前小时" from dual;

--分

select trunc(sysdate, 'mi') "当前分钟" from dual;

select trunc(sysdate,'mi') + 10/ (24*60) "10分钟后的时间"from dual;

--秒

select sysdate + 10/(24 * 60 * 60) "10秒钟后" from dual;--trunc没有精确到秒的精度

相关推荐
HackTwoHub4 小时前
AI大模型网关存在SQL注入、附 POC 复现、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·网络安全·系统安全·网络攻击模型·安全架构
l1t5 小时前
DeepSeek总结的DuckLake构建基于 SQL 原生表格式的下一代数据湖仓
数据库·sql
KmSH8umpK5 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第八篇
数据库·redis·分布式
TDengine (老段)5 小时前
从施工监测到运营预警,桥科院用 TDengine 提升桥梁数据管理能力
大数据·数据库·物联网·时序数据库·tdengine·涛思数据
S1998_1997111609•X6 小时前
论mysql国盾shell-sfa犯罪行为集团下的分项工程及反向注入原理尐深度纳米算法下的鐌檵鄐鉎行为
网络·数据库·网络协议·百度·开闭原则
KmSH8umpK7 小时前
Redis分布式锁从原生手写到Redisson高阶落地,附线上死锁复盘优化方案进阶第七篇
数据库·redis·分布式
yaodong5188 小时前
不会Python也能数据分析:Gemini 3.1 Pro解决办公问题的SQL自动生成
python·sql·数据分析
BU摆烂会噶8 小时前
【LangGraph】持久化实现的三大能力——时间旅行
数据库·人工智能·python·postgresql·langchain
l1t9 小时前
DeepSeek总结的DuckLake 入门
数据库
Joseph Cooper9 小时前
RAG 与 AI Agent:智能体真的需要检索增强生成吗?
数据库·人工智能·ai·agent·rag·上下文工程