MySQL日期类型介绍及格式化

1、MySQL中常用的几种时间类型有:date、datetime、time、year、timestamp

数据类型 占用字节 最小值 最大值 零值表示 备注
date 4 1000-01-01 9999-12-31 0000-00-00 日期,就是datetime中的date部分
datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59 0000-00-00 00:00: 00 时间日期型,格式是YYYY-mm-dd HH:ii:ss,表示的范围是从1000到9999。但是有零值:0000-00-00 00:00:00
timestamp 4 19700101080001 2038年的某个时刻 0000000000000000 时间戳,并不是常规意义时间戳(如:14253685),范围是’1970-01-01 00:00:00’到2037年。格式为YYYY-mm-dd HH:ii:ss,格式与datetime完全一致;
time 3 -838:59:59 838:59:59 00:00:00 时间(段),指定的某个区间之间,从-时间到+时间(有负时间表示)
year 1 1901 2155 0000 yy和yyyy,yyyy的范围是1901-2155,yy的范围是1970-2069。两位year(00-69表示2000-2069,70-99表示1970~1999)。当应用只需要记录年份时,year比date更省空间

2、日期格式化

  (1)date_format

    select date_format('2022-09-22 00:00:00', '%Y-%m-%d %H:%i:%s');把当天0点改为当天最后时间点:select date_format('2022-09-22 00:00:00', '%Y-%m-%d 23:59:59');

  (2)str_to_date

    select str_to_date('2022-09-22 00:00:00', '%Y-%m-%d %H:%i:%s');

3、字母代表含义:

%Y:年,4 位(eg:2021)
%y:年,2 位(eg:21)
%M:月份英文(eg:October)
%b:缩写月名(eg:Oct)
%m:月,数值(01-12)
%c:月,1~2位数值(1-12)
%D:天,带有英文(eg:13th)
%d:天,2位数值(01-31)[有的地方说是00开始,难道每月有0号吗]
%e:天,1~2位数值(1-31)
%j:年的天 (001-366)
%H:小时,2位数值(00-23)
%h:小时,12小时制,2位数值(01-12)(20点变08)
%I(i的大写):小时,12小时制,2位数值(01-12)(20点变08)
%l(L的小写):小时,12小时制,1~2位数值(1-12)(20点变8)
%k:小时 (0-23)
%i:分钟,2位数值(00-59)
%S:秒,2位数值(00-59)
%s:秒,2位数值(00-59)
%f:微秒 (字段类型是datetime(6)这样才会有值)
%p:AM 或 PM
%r:时间,12-小时(hh:mm:ss AM 或 PM)(eg:05:37:23 PM)
%T:时间,24-小时 (hh:mm:ss)(eg:17:37:49)
%U:周 (00-53) 星期日是一周的第一天
%u:周 (00-53) 星期一是一周的第一天
%V:周 (01-53) 星期日是一周的第一天,与 %X 使用
%v:周 (01-53) 星期一是一周的第一天,与 %x 使用
%w:周的天 (0=星期日, 6=星期六)
%W:星期名 (eg:Friday)
%a:缩写星期名(eg:Fri)
%X:年,其中的星期日是周的第一天,4 位,与 %V 使用
%x:年,其中的星期一是周的第一天,4 位,与 %v 使用

posted on 2022-09-22 18:33  潘大炮  阅读(2803)  评论(0编辑  收藏  举报