MySQL一些常用的时间函数 current_timestamp()

Wesley13
• 阅读 546

mysql自带的一些函数功能也是很强大的,这里整理了一下时间方面的

获取当前时间格式串:

#获取当前时间戳
current_timestamp() yyyy-mm-dd hh:ii:ss 
now() yyyy-mm-dd hh:ii:ss
curdate() yyyy-mm-dd
current_date()
curtime() hh:ii:ss
current_time()

提取date各个字段

#提取date各个字段
date('yyyy-mm-dd hh:ii:ss') yyyy-mm-dd
year('yyyy-mm-dd hh:ii:ss') yyyy
month('yyyy-mm-dd hh:ii:ss') mm
day('yyyy-mm-dd hh:ii:ss') dd

提取time各个字段

#提取time各个字段
time('yyyy-mm-dd hh:ii:ss') hh:ii:ss
hour('yyyy-mm-dd hh:ii:ss') hh
minute('yyyy-mm-dd hh:ii:ss') ii
second('yyyy-mm-dd hh:ii:ss') ss

获取当前或者某一时间的unix时间戳

#unix时间戳1970-01-01以来的秒数
unix_timestamp()
#同时还可以将某一时间格式串的秒数转化出来
unix_timestamp('yyyy-mm-dd hh:ii:ss')

格式化时间串和格式化时间戳

#格式化时间串 date_format 与 time_format 为同一函数 输入为 
date_format(now(), '%Y-%m-%d %T');
time_format(now(), '%H:%i:%s');

#格式化时间戳 将时间戳转化为时间格式串
from_unixtime(unix_timestamp(), "%Y-%m-%d %T")

datetime 类型 与 timestamp 类型的比较

timestamp类型的列可以设置 DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 等特殊属性

而 datetime 作为时间格式无法设置当前时间为其默认值,因为mysql不允许函数作为默认值定义,即 default now()是无效的 ,其他的时间格式还有 YEAR DATE TIME

datetime YYYY-mm-dd HH:ii:ss '1000-01-01 00:00:00'到'9999-12-31 23:59:59' 8字节
timestamp YYYY-mm-dd HH:ii:ss '1970-01-01 00:00:00'到'2037-12-31 23:59:59' 4字节

date_add() date_sub() interval

对于时间戳直接加值就可以进行时间平移,但对于时间格式串的加减我们可以使用 INTERVAL expr TYPE

TYPE是指跨度单位:

MICROSECOND SECOND MINUTE HOUR DAY WEEK MONTH QUARTER【四分之一年】 YEAR

还有

SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
#"5:20:15" 5小时20分15秒的步进量
HOUR_SECOND
#"5:20" 5小时20分的步进量
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
#"0001-02"1年零2个月的步进量
YEAR_MONTH

#+- 参照点 间隔度
#当前时间加5天
date_add(now(), interval 5 DAY)
#当前时间减5天
date_sub(now(), interval 5 DAY)
#加5天2小时10分钟20秒
date_add(now(), interval "05 02:10:20" DAY_SECOND);
#加1年2个月
date_add(now(), interval "0001-02" YEAR_MONTH);
#当然也可以直接用运算符
select now() + interval 5 DAY, now() - interval 5 DAY
#换成时间戳的运算是
select unix_timestamp() + 5*24*60*60, unix_timestamp() - 5*24*60*60

extract()从时间格式串中提取时间

#提取天
select extract(DAY from now());
#提取天 小时 分钟 秒 
select extract(DAY_SECOND from now());

datediff()返回两个时间点相差的天数

#-5天 只会计算天数
select datediff(now(), now() + interval 5 day);
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
2年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
2年前
PHP中的NOW()函数
是否有一个PHP函数以与MySQL函数NOW()相同的格式返回日期和时间?我知道如何使用date()做到这一点,但是我问是否有一个仅用于此的函数。例如,返回:2009120100:00:001楼使用此功能:functiongetDatetimeNow(){