一、首先来介绍相同点,使用方面统一由now()函数来介绍了。
1、UTC_TIMESTAMP()和now()会根据表结构对应的字段去显示相关的数据,sysdate() 函数将返回当前日期时间显示形式和他们相仿,默认情况下显示的数据格式为"YYYY-MM-DD HH:MM:DD"的格式来显示,还有可能会以数字(YYYYMMDDHHMMSS)的形式显示。
示例一:
select now() //显示的是运行sql时的时间
select sysdate() //显示的是运行到该方法的时间,该区别后续会说明
示例二:
select NOW()+0
select sysdate()+0
2、如果要在当天的基础上加减时间可能需要用的的函数有:(后续学习到会持续更新,欢迎小伙伴们评论区留言)
INTERVAL | 间隔 |
YEAR | 年 |
MONTH | 月 |
WEEK | 周 |
DAY | 天 |
HOUR | 小时 |
MINUTE | 分钟 |
SECOND | 秒 |
MICROSECOND | 微秒 |
DATE_ADD(date,INTERVAL expr type) | 在给定日期上添加指定的时间间隔 |
DATE_SUB(date,INTERVAL expr type) | 在给定日期上减去指定的时间间隔 |
DATEDIFF(date1,date2) | 返回两个日期之间的天数差 |
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2) | 返回两个日期时间表达式之间的时间差,以指定的单位表示。 |
DATA_FORMAT(date,format) | 以format格式显示 |
- DATE_ADD函数使用
DATE_ADD(now(),INTERVAL 1 DAY)
等价于
now() + INTERVAL 1 DAY
- DATE_SUB函数使用
select DATE_sub(now(),INTERVAL 1 HOUR)
等价于
select now() - INTERVAL 1 HOUR
- DATEDIFF函数使用
select DATEDIFF('2023-11-29 13:49:02',now())
- TIMESTAMPDIFF函数使用
//计算两个日期之间的天数差
SELECT TIMESTAMPDIFF(DAY, '2022-01-01', '2022-03-17');
//返回结果:75
//计算两个日期时间之间的小时数差
SELECT TIMESTAMPDIFF(HOUR, '2022-03-17 10:30:00', '2022-03-17 13:45:00');
//返回结果:3
//计算两个日期之间的月份差:
SELECT TIMESTAMPDIFF(MONTH, '2022-01-01', '2022-12-31');
//返回结果:11
- DATA_FORMAT(date,format)以什么格式显示
select DATE_FORMAT(now(),'%Y-%m-%d');
//返回结果:2023-11-28
二、不同点介绍
- 返回值的精度:
NOW()
函数返回当前的日期和时间,包括时分秒,而SYSDATE()
函数返回当前的日期和时间,但不包括时分秒。 - 使用的数据库系统:
NOW()
是标准SQL函数,可以在大多数关系型数据库中使用,而SYSDATE()
是MySQL特有的函数。 - 性能:在某些数据库系统中,
SYSDATE()
的性能可能比NOW()
更好,因为它不需要进行时区转换。 - 显示的时间根据sql查询时间有不同结果。
SELECT NOW(), SLEEP(5), NOW();
和
SELECT SYSDATE(), SLEEP(5), SYSDATE();
总之,选择使用NOW()
还是SYSDATE()
取决于你的具体需求和使用的数据库系统。如果你需要获取当前的完整日期和时间,包括时分秒,并且正在使用支持NOW()
的数据库系统,那么应该使用NOW()
。如果你只需要获取当前的日期和时间而不包括时分秒,并且正在使用MySQL数据库,那么可以使用SYSDATE()
。