数据库存储日期的类型
数据库中存储时间有很多种方式,出于不同的考量存储的方式也不同,常见的几种类型有:timestamp,int(秒数),bigint(毫秒数),date(年月日),time(时、分、秒)。
当在数据库中存储的时间为秒数或者毫秒数的时候,如何转换为具体的日期呢,可以通过FROM_UNIXTIME(sec,format)函数和UNIX_TIMESTAMP(date)函数实现秒/毫秒数和日期的转换。
FROM_UNIXTIME(sec,format)
- 函数将秒转换为日期
- 参数sec指的是秒数,format指的是格式
select FROM_UNIXTIME(u_registryDate,'%Y-%m-%d %h:%i:%s') from u_user
UNIX_TIMESTAMP(date)
- 将日期转换为秒数
- date是日期
select UNIX_TIMESTAMP(date) from u_user
SEC_TO_TIME(sec)
- 将秒转换为小时:分钟:秒形式
select SEC_TO_TIME(u_registryDate) from u_user
TIME_TO_SEC(date)
- 将时间转换为秒,date格式X时X分X秒,如果是年月日时分秒格式只转后面时分秒
select TIME_TO_SEC(date) from u_user
附
日期常用操作说明符:
说明符 | 说明 |
---|---|
%a | 工作日的缩写名称(Sun~Sat) |
%b | 月份的缩写名称(Jan…Dec) |
%c | 月份,数字形式(0~12) |
%D | 带有英语后缀的该月日期(0th, 2st, 3nd,…) |
%d | 该月日期,数字形式(00~31) |
%e | 该月日期,数字形式((0~31) |
%f | 微秒(000000 …999999) |
%H | 以 2 位数表示 24 小时(00~23) |
%h, %I | 以 2 位数表示 12 小时(01~12) |
%i | 分钟,数字形式(00~59) |
%j | —年中的天数(001~366) |
%k | 以 24 小时(0~23)表示 |
%l | 以12小时(1~12)表示 |
%M | 月份名称(January~December) |
%m | 月份,数字形式(00~12) |
%p | 上午(AM) 或下午(PM) |
%r | 时间,12小时制(小时 (hh): 分钟 (mm) : 秒数 (ss) 后加 AM 或 PM) |
%S, %s | 以 2 位数形式表示秒(00~59) |
%T | 时间,24 小时制(小时 (hh): 分钟 (mm): 秒数 (ss)) |
%U | 周(00~53),其中周日为每周的第一天 |
%u | 周(00~53),其中周一为每周的第一天 |
%V | 周(01~53),其中周日为每周的第一天,和%X同时使用 |
%v | 周(01~53),其中周一为每周的第一天,和%x同时使用 |
%W | 星期标识(周日、周一、周二…周六) |
%w | —周中的每日(0= 周日…6= 周六) |
%X | 该周的年份,其中周日为每周的第一天,数字形式,4 位数,和%V同时使用 |
%x | 该周的年份,其中周一为每周的第一天,数字形式,4位数,和%v同时使用 |
%Y | 4 位数形式表示年份 |
%y | 2 位数形式表示年份 |
%% | %一个文字字符 |