马敏11

2020-08-01   阅读量: 925

MySQL常用时间函数

扫码加入数据分析学习群

DATE(date)
返回指定日期/时间表达式的日期部分或将文本转为日期格式
示例

mysql> select date('20200101');
+------------------+
| date('20200101') |
+------------------+
| 2020-01-01 |
+------------------+


WEEK(date[,mode])
返回指定日期是一年中的第几周
示例

mysql> select week('2020-01-01',1);
+--------------------+
| week('2020-01-01') |
+--------------------+
| 1 |
+--------------------+


YEAR(date)
返回指定日期的年份(范围在1000到9999)
示例

mysql> select year('20-01-01');
+------------------+
| year('20-01-01') |
+------------------+
| 2020 |
+------------------+


MONTH(date)
返回指定日期的月份(范围在1到12)
示例

mysql> select month('2020-01-01');
+---------------------+
| month('2020-01-01') |
+---------------------+
| 1 |
+---------------------+


DAY(date)
返回指定日期的日(范围在1到31)
示例
mysql> select day('2020-01-01');
+---------------------+
| day('2020-01-01') |
+---------------------+
| 1 |
+---------------------+

HOUR(datetime)
返回指定时间的小时(范围在1-24)

示例

mysql> select hour('2020-01-01 12:00:00');
+-----------------------------+
| hour('2020-01-01 12:00:00') |
+-----------------------------+
| 12 |
+-----------------------------+


DATE_ADD(date,interval expr type)
ADDDATE(date,interval expr type)
DATE_SUB(date,interval expr type)
SUBDATE(date,interval expr type)
对日期时间进行加减运算
date是一个datetime或date值
expr对date进行加减法的一个表达式字符串
type指明表达式expr应该如何被解释

type值 含义 期望的expr格式
second 秒 seconds
minute 分钟 minutes
hour 时间 hours
day 天 days
month 月 months
year 年 years
minute_second 分钟和秒 "minutes:seconds"
hour_minute 小时和分钟 "hours:minutes"
day_hour 天和小时 "days hours"
year_month 年和月 "years-months"
hour_second 小时, 分钟 "hours:minutes:seconds"
day_minute 天, 小时, 分钟 "days hours:minutes"
day_second 天, 小时, 分钟, 秒 "days hours:minutes:seconds"


mysql> select date_add("2020-01-01",interval 1 day);
+---------------------------------------+
| date_add("2020-01-01",interval 1 day) |
+---------------------------------------+
| 2020-01-02 |
+---------------------------------------+


mysql> select date_sub("2020-01-01", interval 1 day);
+----------------------------------------+
| date_sub("2020-01-01", interval 1 day) |
+----------------------------------------+
| 2019-12-31 |
+----------------------------------------+


DATE_FORMAT(date,format)
根据format字符串格式化date值
在format字符串中可用标志符
%M 月名字(january……december)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(sun……sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(jan……dec)
%j 一年中的天数(001……366)
%h 十二时制的小时(00……12)
%k 二十四时制的小时(0……23)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [ap]m)
%s 秒(00……59)
%p am或pm
%w 一个星期中的天数(0=sunday ……6=saturday )
%u 一年中的周数(1……53)
示例

mysql> select date_format('20-01-01 12:00:00','%Y-%m-%d');
+---------------------------------------------+
| date_format('20-01-01 12:00:00','%Y-%m-%d') |
+---------------------------------------------+
| 2020-01-01 |
+---------------------------------------------+


CURDATE()
以'yyyy-mm-dd'或yyyymmdd格式返回当前日期值(根据返回值所处上下文是字符串或数字)
示例
mysql> select curdate();
+------------+
| curdate() |
+------------+
| 2020-01-01 |
+------------+
mysql> select curdate() + 0;
+---------------+
| curdate() + 0 |
+---------------+
| 20200101 |
+---------------+


CURTIME()
以'hh:mm:ss'或hhmmss格式返回当前时间值(根据返回值所处上下文是字符串或数字)
示例
NOW()
以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回当前日期时间(根据返回值所处上下文是字
符串或数字)
示例
mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 12:00:00 |
+-----------+
mysql> select curtime() + 0;
+---------------+
| curtime() + 0 |
+---------------+
| 120000 |
+---------------+


NOW()
以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回当前日期时间(根据返回值所处上下文是字
符串或数字)

示例

mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2020-01-01 12:00:00 |
+---------------------+
mysql> select now() + 0;
+----------------+
| now() + 0 |
+----------------+
| 20200101120000 |
+----------------+


DATEDIFF(expr1,expr2)
返回结束日expr1和起始日expr2之间的天数
示例

mysql> select empno,ename,job,hiredate,datediff(curdate(),hiredate)/365 工龄 from
emp;
+-------+--------+-----------+------------+---------+
| empno | ename | job | hiredate | 工龄 |
+-------+--------+-----------+------------+---------+
| 7369 | smith | clerk | 1980-12-17 | 39.0438 |
| 7499 | allen | salesman | 1981-02-20 | 38.8658 |
| 7521 | ward | salesman | 1981-02-22 | 38.8603 |
| 7566 | jones | manager | 1981-04-02 | 38.7534 |
| 7654 | martin | salesman | 1981-09-28 | 38.2630 |
| 7698 | blake | manager | 1981-05-01 | 38.6740 |
| 7782 | clark | manager | 1981-06-09 | 38.5671 |
| 7788 | scott | analyst | 1987-04-19 | 32.7041 |
| 7839 | king | persident | 1981-11-17 | 38.1260 |
| 7844 | turner | salesman | 1981-09-08 | 38.3178 |
| 7876 | adams | clerk | 1987-05-23 | 32.6110 |
| 7900 | james | clerk | 1981-12-03 | 38.0822 |
| 7902 | ford | analyst | 1981-12-03 | 38.0822 |
| 7934 | miller | clerk | 1982-01-23 | 37.9425 |
+-------+--------+-----------+------------+---------+


UNIX_TIMESTAMP([date])
返回一个unix时间戳(从'1970-01-01 00:00:00'开始的秒数,date默认值为当前时间)
示例

mysql> select unix_timestamp();
+------------------+
| unix_timestamp() |
+------------------+
| 1564576533 |
+------------------+

mysql> select unix_timestamp('2020-01-01');
+------------------------------+
| unix_timestamp('2020-01-01') |
+------------------------------+
| 1577808000 |
+------------------------------+


FROM_UNIXTIME(unix_timestamp)
以'yyyy-mm-dd hh:mm:ss'或yyyymmddhhmmss格式返回时间戳的值(根据返回值所处上下文是字符
串或数字)
示例

mysql> select from_unixtime(1577808000);
+---------------------------+
| from_unixtime(1577808000) |
+---------------------------+
| 2020-01-01 00:00:00 |
+---------------------------+

mysql> select from_unixtime(1577808000) + 0;
+-------------------------------+
| from_unixtime(1577808000) + 0 |
+-------------------------------+
| 20200101000000 |
+-------------------------------+

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
75.0441 5 5 关注作者 收藏

评论(0)


暂无数据

推荐课程