0、date与timestamp
1)区别
date精确到年月日时分秒,timestamp更精确一些;
但这个不重要,重要的是,实践中我从Oracle数据库取date类型字段,前端展示时分秒都是0,网上说数据库类型是date取到前端就是这样,只能精确到日,后面都是默认填0;
我给字段换成timestamp确实问题解决了,我理解不了!
2)转换
timeStamp --> date
1 |
TO_DATE(to_char(xxxTimestamp, 'yyyy-mm-dd hh24:mi:ss' ), 'yyyy-mm-dd hh24:mi:ss' ) |
date -->timeStamp
1 |
TO_TIMESTAMP(to_char(xxxDate, 'yyyy-mm-dd hh24:mi:ss' ), 'yyyy-mm-dd hh24:mi:ss' ) |
1、获取系统当前时间
date类型的:
sysdate
timestamp类型的:
SYSTIMESTAMP
char类型的:
to_char(sysdate, ‘yyyy-mm-dd hh24:mi:ss’)
2、ORACLE里获取一个时间的年、季、月、周、日的函数:
1 2 3 4 5 |
select to_char(sysdate, ‘yyyy ' ) from dual; --年 select to_char(sysdate, ‘MM' ) from dual; --月 select to_char(sysdate, ‘dd ' ) from dual; --日 select to_char(sysdate, ‘Q' ) from dual; --季 select to_char(sysdate, ‘iw') from dual; --周–按日历上的那种,每年有52或者53周 |
3、日期操作
当前时间减去7分钟的时间
1 |
select sysdate - interval ‘7' MINUTE from dual; |
当前时间减去7小时的时间
1 |
select sysdate - interval ‘7' hour from dual; |
当前时间减去7天的时间
1 |
select sysdate - interval ‘7' day from dual; |
当前时间减去7月的时间
1 |
select sysdate - interval ‘7' month from dual; |
当前时间减去7年的时间
1 |
select sysdate - interval ‘7' year from dual; |
时间间隔乘以一个数字
1 |
select sysdate - 8*interval ‘7' hour from dual; |
4、常用的时间戳
1 2 3 4 |
//获取当年的一月一号 to_date(concat(( select to_char(sysdate,‘yyyy ') from dual), ‘-01-01 0' ),‘yyyy-MM-dd HH24:mi:ss') // date 格式 //获取这个月的一月一号 SELECT LAST_DAY(ADD_MONTHS(SYSDATE, -1)) + 1 FROM DUAL; // date 格式 |
char格式
1 |
SELECT TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE, -1)) + 1,‘yyyy-mm-dd HH24:mi:ss') FROM DUAL; |
5、查询某时间范围
1 2 3 4 |
SELECT users.* FROM users WHERE create_time >= '2021-12-01 0' AND create_time <= '2021-12-06 0' |
或者
1 2 3 4 |
SELECT users.* FROM users WHERE create_time BETWEEN '2021-12-01' AND '2021-12-07' ; |
总结
到此这篇关于Oracle如何在SQL语句中对时间操作、运算的文章就介绍到这了,更多相关Oracle对时间操作运算内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/Derek7117/article/details/122435000
查看更多关于Oracle如何在SQL语句中对时间操作、运算的详细内容...