胖子没有夏天,英俊如我亦唯有时间。逝者如斯夫,不舍昼夜。
目录
1 抓不住的时间
是谁在说抓不住时间,看如何在MySql及其分支数据库里下获取当前时间。
Percona官网地址:http://www.percona.com/
Maridb官网地址:https://mariadb.org/
MySql处理日期和时间函数众多,简单介绍3类获取当前日期时间时常用函数:
- 查询开始时的当前时间戳. current_timestamp -> timestamp with time zone
- 查询开始时的当前日期. current_date -> date
- 查询开始时的当前时间. current_time -> time with time zone
2.1 获取当前日期时间NOW
表示当前日期时间的主要有NOW()和SYSDATE()
NOW()返回是语句开始执行的时间,SYSDATE()返回是动态实时时间。
在存储的函数或触发器中,NOW()返回函数或触发语句开始执行的时间。
NOW()在整个语句执行过程中都不会变化。
NOW()返回日期时间格式取决于数据库设置的时区。
SELECT NOW(2),SYSDATE(),SLEEP(2),NOW(2),SYSDATE()
# NOW(2) SYSDATE() SLEEP(2) NOW(2)(1) SYSDATE()(1)
# 2020-06-06 17:52:08.89 2020-06-06 17:52:08 0 2020-06-06 17:52:08.89 2020-06-06 17:52:10
NOW()还有3个同义词,其写法形式与效果保持一致。
NOW(),NOW([precision])
LOCALTIME, LOCALTIME([precision])
LOCALTIMESTAMP,LOCALTIMESTAMP([precision])
CURRENT_TIMESTAMP,CURRENT_TIMESTAMP([precision])
SELECT NOW(),NOW(3)
UNION ALL
SELECT LOCALTIME,LOCALTIME(3)
UNION ALL
SELECT LOCALTIMESTAMP,LOCALTIMESTAMP(3)
UNION ALL
SELECT CURRENT_TIMESTAMP,CURRENT_TIMESTAMP(3)
#NOW() NOW(3)
#2020-06-06 17:54:38 2020-06-06 17:54:38.927
#2020-06-06 17:54:38 2020-06-06 17:54:38.927
#2020-06-06 17:54:38 2020-06-06 17:54:38.927
#2020-06-06 17:54:38 2020-06-06 17:54:38.927
2.2 获取日期CURDATE
CURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE().
SELECT CURDATE(),CURRENT_DATE,CURRENT_DATE(),CURRENT_DATE()+0
#CURDATE() CURRENT_DATE CURRENT_DATE() CURRENT_DATE()+0
#2020-06-06 2020-06-06 2020-06-06 20200606
2.3 获取时间CURTIME
CURRENT_TIME and CURRENT_TIME() are synonyms for CURTIME().
SELECT CURTIME(),CURRENT_TIME,CURRENT_TIME(),CURRENT_TIME()+0
#CURTIME() CURRENT_TIME CURRENT_TIME() CURRENT_TIME()+0
#17:37:14 17:37:14 17:37:14 173714
3 如何选择
3.1建表时选择类型
考虑自动初始化和自动更新的特性才范围很小的timestamp。知识增加
3.2 查询时选择函数NOW
在MySQL取当前时间的时候sysdate不会走索引,记得用NOW。
3.3为了在外行面前装逼用长度最大的CURRENT_TIMESTAMP。
4 参考
https://www.cnblogs.com/pcheng/p/6004679.html
https://blog.youkuaiyun.com/qq_21108311/article/details/83109296
https://mariadb.com/kb/en/current_timestamp/
https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
https://mariadb.com/kb/en/now/
https://dev.mysql.com/doc/refman/8.0/en/timestamp-initialization.html