文章摘要
这篇文章介绍了Oracle数据库中与时间操作相关的内容,包括日期(date)和时间戳(timestamp)的区别与应用,以及如何在SQL语句中进行时间运算和查询。
1. **date和timestamp的区别**
- `date`类型精确到年、月、日,而`timestamp`类型更精确到秒。
- 但实践中,`date`类型返回的时间在前端显示为`00:00:00`,而`timestamp`类型可以更精确地获取时间。
2. **时间转换与运算**
- 时间转换:
- `timestamp`转换为`date`:使用`TO_DATE`函数。
- `date`转换为`timestamp`:使用`TO_TIMESTAMP`函数。
- 时间运算:
- 计算当前时间减去特定时间单位(如分钟、小时、天等)。
- 获取特定日期,如当年的一月一号、月一号等。
3. **查询特定时间范围记录**
- 使用`TO_CHAR`函数将`sysdate`转换为字符型时间,并结合`Interval`关键字进行时间范围查询。
- 示例:`WHERE create_time BETWEEN '2021-12-01' AND '2021-12-07'`。
总结:这篇文章详细介绍了如何在Oracle中进行时间相关操作,包括时间类型转换、时间运算以及查询特定时间范围的记录,为实际应用提供了实用的解决方案。
目录0、date与timestamp1、获取系统当前时间2、ORACLE里获取一个时间的年、季、月、周、日的函数:3、日期操作4、常用的时间戳5、查询某时间范围总结
1)区别
date精确到年月日时分秒,timestamp更精确一些;
但这个不重要,重要的是,实践中我从Oracle数据库取date类型字段,前端展示时分秒都是0,网上说数据库类型是date取到前端就是这样,只能精确到日,后面都是默认填0;
我给字段换成timestamp确实问题解决了,我理解不了!
2)转换
timeStamp –> date
TO_DATE(to_char(xxxTimestamp, ‘yyyy-mm-dd hh24:mi:ss’), ‘yyyy-mm-dd hh24:mi:ss’)
date –>timeStamp
TO_TIMESTAMP(to_char(xxxDate, ‘yyyy-mm-dd hh24:mi:ss’), ‘yyyy-mm-dd hh24:mi:ss’)
date类型的:
sysdate
timestamp类型的:
SYSTIMESTAMP
char类型的:
to_char(sysdate, ‘yyyy-mm-dd hh24:mi:ss’)
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周
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周
当前时间减去7分钟的时间
select sysdate – interval ‘7′ MINUTE from dual;
当前时间减去7小时的时间
select sysdate – interval ‘7′ hour from dual;
当前时间减去7天的时间
select sysdate – interval ‘7′ day from dual;
当前时间减去7月的时间
select sysdate – interval ‘7′ month from dual;
当前时间减去7年的时间
select sysdate – interval ‘7′ year from dual;
时间间隔乘以一个数字
select sysdate – 8*interval ‘7′ hour from dual;
//获取当年的一月一号
to_date(concat((select to_char(sysdate,‘yyyy’) from dual), ‘-01-01 00:00:00′),‘yyyy-MM-dd HH24:mi:ss’) //date格式
//获取这个月的一月一号
SELECT LAST_DAY(ADD_MONTHS(SYSDATE, -1)) + 1 FROM DUAL; //date格式
to_date(concat((select to_char(sysdate,‘yyyy’) from dual), ‘-01-01 00:00:00′),‘yyyy-MM-dd HH24:mi:ss’) //date格式
//获取这个月的一月一号
SELECT LAST_DAY(ADD_MONTHS(SYSDATE, -1)) + 1 FROM DUAL; //date格式
char格式
SELECT TO_CHAR(LAST_DAY(ADD_MONTHS(SYSDATE, -1)) + 1,‘yyyy-mm-dd HH24:mi:ss’) FROM DUAL;
SELECT users.*
FROM users
WHERE create_time >=’2021-12-01 00:00:00′
AND create_time <=’2021-12-06 00:00:00′
FROM users
WHERE create_time >=’2021-12-01 00:00:00′
AND create_time <=’2021-12-06 00:00:00′
或者
SELECT users.*
FROM users
WHERE create_time
BETWEEN ‘2021-12-01’ AND ‘2021-12-07’;
FROM users
WHERE create_time
BETWEEN ‘2021-12-01’ AND ‘2021-12-07’;
到此这篇关于Oracle如何在SQL语句中对时间操作、运算的文章就介绍到这了,更多相关Oracle对时间操作运算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:Oracle计算时间差常用函数oracle 日期时间函数使用总结Oracle如何获取系统当前时间等操作实例oracle统计时间段内每一天的数据(推荐)Oracle关于时间/日期的操作
© 版权声明
文章版权归作者所有,未经允许请勿转载。