相信大家偶尔也会对MySQL中的日期而感觉到头疼的把,今天小编给大家带来非常完整的SQL中常用的日期命令以及用法,通俗易懂哦~
话不都说,先上干货
MySQL中常用的Date函数表如下:
函数
描述
返回日期格式
SQL格式(例子)
NOW()
返回当前的日期和时间
YYYY-MM-DD HH:mm:ss
select now();
CURDATE()
返回当前的日期
YYYY-MM-DD
select curdate();
CURTIME()
返回当前的时间
HH:mm:ss
select curtime();
DATE()
提取日期或日期/时间表达式的日期部分
YYYY-MM-DD
select date(合法日期) from 表名称;
EXTRACT()
返回日期/时间按的单独部分
-
select extract(日期参数 from 合法日期) from 表名称;
DATE_ADD()
给日期添加指定的时间间隔(不会影响存储数据,输出数据会有变化)
-
select date_add(合法日期, interval 增加的时间间隔 日期参数) from 表名称;
DATE_SUB()
从日期减去指定的时间间隔
-
select date_sub(合法日期, interval 增加的时间间隔 日期参数) from 表名称;
DATEDIFF()
返回两个日期之间的天数(前后参数无大小限制)
-
select datediff(日期1, 日期2);
DATE_FORMAT()
用不同的格式显示日期/时间
-
select date_format(合法日期,输出的格式) from 表名称
1、now()/curdate()/curtime():
2、date():
3、extract():(中文意思:提取),date_add(), date_sub(),如下表:
提示:输出格式中,省略前面的所有0,最小输出为0;
日期参数
描述
输出格式(EXTRACT())
输出算式(DATE_ADD())
输出算式(DATE_SUB())
MICROSECOND
一百万分之一秒,微秒
-
+ 毫秒数
- 毫秒数
SECOND
秒
ss
+ 秒数
- 秒数
MINUTE
分
mm
+ 分数
- 分数
HOUR
时
HH
+ 时数
- 时数
DAY
天
DD
+ 天数
- 天数
WEEK
周
-
+ 周数
- 周数
MONTH
月
MM
+ 月数
- 月数
QUARTER
刻
-
+ 刻数
- 刻数
YEAR
年
YY
+ 年数
- 年数
SECOND_MICROSECOND
秒 × 1,000,000
ss000000
+ 毫秒数
- 毫秒数
MINUTE_MICROSECOND
分 × 1,000,000
mm000000
+ 毫秒数
- 毫秒数
MINUTE_SECOND
分秒
mmss
+ 秒数
- 秒数
HOUR_MICROSECOND
时 × 1,000,000
HH000000
+ 毫秒数
- 毫秒数
HOUR_SECOND
时分秒
HHmmss
+ 秒数
- 秒数
HOUR_MINUTE
时分
HHmm
+ 分数
- 分数
DAY_MICROSECOND
天时分秒 × 1,000,000
DDHHmmss000000
+ 毫秒数
- 毫秒数
DAY_SECOND
天时分秒
DDHHmmss
+ 秒数
- 秒数
DAY_MINUTE
天时分
DDHHmm
+ 分数
- 分数
DAY_HOUR
天时
DDHH
+ 小时数
- 小时数
YEAR_MONTH
年月
YYYYMM
+ 月数
- 月数
部分截图演示:
4、datediff()(2个日期相差数):
5、date_format():如下表,输出的格式如下:
格式
描述
%a
缩写星期名
%b
缩写月名
%c
月,数值
%D
带有英文前缀的月中的天
%d
月的天,数值(00-31)
%e
月的天,数值(0-31)
%f
微秒
%H
小时 (00-23)
%h
小时 (01-12)
%I
小时 (01-12)
%i
分钟,数值(00-59)
%j
年的天 (001-366)
%k
小时 (0-23)
%l
小时 (1-12)
%M
月名
%m
月,数值(00-12)
%p
AM 或 PM
%r
时间,12-小时(hh:mm:ss AM 或 PM)
%S
秒(00-59)
%s
秒(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 位
6、timestamp(时间戳):
时间戳在创建表时的用法说明如下:
创建新记录和修改现有记录的时候都对这个数据列刷新
TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它
TIMESTAMP DEFAULT CURRENT_TIMESTAMP
在创建新记录的时候把这个字段设置为0,以后修改时刷新它
TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
在创建新记录的时候把这个字段设置为给定值,以后修改时刷新它
TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss' ON UPDATE CURRENT_TIMESTAMP
时间戳的函数格式如下:
格式
描述
timestamp(date)
date to timestamp
timestamp(dt,time)
dt + time
timestampadd(unit,interval,datetime_expr)
-
timestampdiff(unit,datetime_expr1,datetime_expr2)
-
7、timezone(时区):
格式:convert_tz(dt,from_tz,to_tz)
8、一些常用的函数整理:
常用函数
描述
to_days
函数查询今天的数据:select * from 表名 where to_days(时间字段名) = to_days(now());
返回从0000年(公元1年)至当前日期的总天数
DAYOFWEEK(date)
返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。
WEEKDAY(date)
返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
DAYOFMONTH(date)
返回date的月份中日期,在1到31范围内。
DAYOFYEAR(date)
返回date在一年中的日数, 在1到366范围内
MONTH(date)
返回date的月份,范围1到12。
DAYNAME(date)
返回date的星期名字。
MONTHNAME(date)
返回date的月份名字。
QUARTER(date)
返回date一年中的季度,范围1到4。
WEEK(date)
对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。
WEEK(date,first)
2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1, 从星期一开始。
YEAR(date)
返回date的年份,范围在1000到9999。
HOUR(time)
返回time的小时,范围是0到23。
MINUTE(time)
返回time的分钟,范围是0到59。
SECOND(time)
回来time的秒数,范围是0到59。
PERIOD_ADD(P,N)
增加N个月到阶段P(以格式YYMM或YYYYMM)。以格式YYYYMM返回值。注意阶段参数P不是日期值。
PERIOD_DIFF(P1,P2)
返回在时期P1和P2之间月数,P1和P2应该以格式YYMM或YYYYMM。注意,时期参数P1和P2不是日期值。
FROM_DAYS(N)
给出一个天数N,返回一个DATE值。
TIME_TO_SEC(time)
返回time参数,转换成秒。
不积跬步,无以至千里;不急小流,无以成江海。每天学一点,大神离你就不远。
今天的分享就到这了,希望大家喜欢,能和大家一起学习MySQL知识~~~~