首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle 与 MySQL 的差异分析(7):日期和时间函数

Oracle 与 MySQL 的差异分析(7):日期和时间函数

作者头像
一头小山猪
发布2020-04-10 16:21:18
2.6K0
发布2020-04-10 16:21:18
举报
文章被收录于专栏:微光点亮星辰微光点亮星辰

Oracle 与 MySQL 的差异分析(7):日期和时间函数

1 获取当前日期和时间

1.1Oracle

Oracle 中的日期类型是带有时分秒的,获取当前时间可以用sysdate,如果要获得更高的精度可以用 systimestamp。查出来的结果的格式受系统参数控制,相当于做了默认的to_char 操作。

1.2 MySQL

curdate():获取当前日期,不包括时分秒。

curtime():获取当前时间,不包含日期。

now()/sysdate():获取当前时间和日期。

2 字符串和日期的转换

2.1Oracle

to_date:字符串到时间的转换

to_char:时间到字符串的转换

常用的日期格式有 yyyymmddhh24miss 和yyyy-mm-dd hh24:mi:ss。

如果时间带AM/PM,那么日期格式可以用 yyyy-mm-dd hh:mi:ssam。

eg:

select to_char(sysdate, ’yyyymmddhh24miss ’),

to_date(‘2017-06-01 9:25:40’, ‘yyyy-mm-ddhh24:mi:ss’),

to_date(‘2017-06-01 9:25:40 PM’, ‘yyyy-mm-ddhh:mi:ss am’)

from dual;

2.2 MySQL

str_to_date:字符串到时间的转换

date_format():时间到字符串的转换

常用的日期格式是 %Y-%m-%d %H:%i:%s

eg:

select str_to_date(‘2008-4-215:3:28’, ‘%Y-%m-%d %H:%i:%s’);

select date_format(now(), ‘%Y-%m-%d%H:%i:%s’);

3 日期和时间的截取

3.1Oracle

trunc:将日期类型截取到天、月、年、分、小时。

to_char:获取日期类型的天、月、年、分、小时、秒。

eg:

select trunc(sysdate),trunc(sysdate, ‘mm’) from dual;

结果:2017/4/18 2017/4/1

select to_char(sysdate, ’hh24’)from dual;

结果:09

注意:trunc的结果仍然是date类型,而to_char的结果是字符串。

3.2 MySQL

MySQL中似乎没有类似Oracle的trunc函数,可以用date_format获取想要的日期格式。

extract:获取日期的一部分。

eg:

select extract(hour from now());

结果:1

4 日期和时间的计算

4.1Oracle

+ N:对 date类型加1表示加1天,那么1小时可以用1/24表示,同理1秒=1/86400。

numtodsinterval:同样表示时间间隔,1秒可以表示为numtodsinterval(1, ’second’)。

add_months:增加N月。

eg:

select sysdate, sysdate + 1,sysdate + numtodsinterval(1, ’hour’),

add_months(sysdate, 3)

from dual;

结果:2017-04-18 10:39:41 2017-04-19 10:39:41 2017-04-18 11:39:41

2017-07-18 10:39:41+

4.2 MySQL

+ interval:对日期时间类型加1天、1秒、1月等。

eg:

select now(), now() + interval 1second;

结果:2017-04-18 10:47:41 2017-04-18 10:47:42

select now(), now() + interval 1day;

结果:2017-04-18 10:47:41 2017-04-19 10:47:41

date_add/adddate:和直接用interval结果一样。

date_sub:用于减一个interval。

eg:

select now(), date_add(now(),interval 1 second);

结果:2017-04-18 10:46:02 2017-04-18 10:46:03

select now(), date_add(now(),interval 1 month);

结果:2017-04-18 10:46:02 2017-05-18 10:46:02

select now(), date_sub(now(),interval 1 second);

结果:2017-04-18 10:51:10 2017-04-18 10:51:09

datediff:计算两个日期之间间隔的天数。

eg:

select datediff(now(), str_to_date(‘2009-02-02’,‘%Y-%m-%d’));

结果:2997

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微光点亮星辰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档