MySQL白菜教程(Level 4)

2021-08-16  本文已影响0人  七喜丶

时间函数

在使用 NOW()CURTIME() 时,如果要精确的秒以后的时间的话,可以在()中加数字,加多少,就表示精确到秒后多少位
比如 NOW(3) 就是精确到毫秒,表示为:2021-03-31 15:27:20.645

语法:

select now() | curdate() | curtime();

实例如下:

mysql> select now() as now, curdate() as nowDate, curtime(3) as nowTime;
+---------------------+------------+--------------+
| now                 | nowDate    | nowTime      |
+---------------------+------------+--------------+
| 2021-08-16 10:16:46 | 2021-08-16 | 10:16:46.624 |
+---------------------+------------+--------------+
1 row in set (0.01 sec)

语法:

select date(`data`) | time(`data`) ;

实例如下:

mysql> select date('2020-08-16 10:16:46') as date, time('2021-08-16 11:16:46') as time;
+------------+----------+
| date       | time     |
+------------+----------+
| 2020-08-16 | 11:16:46 |
+------------+----------+
1 row in set (0.00 sec)

语法:

select extract(unit from date) from table ;

其中:
table 是表格名
date 参数是合法的日期表达式。
unit 参数是需要返回的时间部分,如 YEARMONTHDAYHOURMINUTESECOND

在一般情况下,EXTRACT(unit FROM date) 与 unit() 的结果相同

实例如下:

mysql> select extract(hour from '2020-08-16 10:16:46');
+------------------------------------------+
| extract(hour from '2020-08-16 10:16:46') |
+------------------------------------------+
|                                       10 |
+------------------------------------------+
1 row in set (0.01 sec)

语法:

select date_format(date, format) ;

其中
date一个有效日期
format 是 date/time 的输出格式

输出格式 表示含义
%Y 表示年的全称(2000-08-16)
%y 表示年的后两位 (00)
%M 表示月的英式表达 (August)
%m 表示月 (08)
%D 表示日的英式表达 (16th)
%d 表示日 (16)
%H or %h 表示小时
%i 表示分钟
%S or %s 表示秒
%W 表示周几的英式表达
%w 表示周几数字

实例如下

mysql> select date_format('2000-08-16 10:16:46', '%Y-%m-%d %h:%i:%s') as date, date_format('2000-08-16 10:16:46', '%W %w') as week;
+---------------------+-------------+
| date                | week        |
+---------------------+-------------+
| 2000-08-16 10:16:46 | Wednesday 3 |
+---------------------+-------------+
1 row in set (0.00 sec)

语法:

select date_add(date, INTERVAL expr type) from table_name ;

其中:
date指代希望被操作的有效日期,为起始日期
expr 是希望添加的时间间隔的数值(expr 是一个字符串,对于负值的间隔,可以以 ”-“ 开头)
type 是具体的数据类型,表示加上时间间隔的单位(可以是 MICROSECOND , SECOND , MINUTE , HOUR , DAY , WEEK , MONTH , QUARTER , YEAR 等)

实例如下

mysql> select date_add('2000-08-16 10:16:46', interval 1 year) as changeDate;
+---------------------+
| changeDate          |
+---------------------+
| 2001-08-16 10:16:46 |
+---------------------+
1 row in set (0.00 sec)

语法:

select date_sub(date, INTERVAL expr type) from table_name ;

其中:
date指代希望被操作的有效日期,为起始日期
expr 是希望添加的时间间隔的数值(expr 是一个字符串,对于负值的间隔,可以以 ”-“ 开头)
type 是具体的数据类型,表示加上时间间隔的单位(可以是 MICROSECOND , SECOND , MINUTE , HOUR , DAY , WEEK , MONTH , QUARTER , YEAR 等)

实例如下

mysql> select date_add('2000-08-16 10:16:46', interval 1 year) as changeDate;
+---------------------+
| changeDate          |
+---------------------+
| 2019-08-16 10:16:46 |
+---------------------+
1 row in set (0.00 sec)

语法:
DATEDIFF(时间1, 时间2):差值计算规则:时间 1 - 时间 2

select datediff(时间1, 时间2) from table_name;

TIMESTAMPDIFF()
语法:
TIMESTAMPDIFF(type, 时间1, 时间2):差值计算规则:时间 2 - 时间 1
type: YEAR(年差)、MONTH(月差)、DAY(天差)、WEEK(周差)、HOUR(时差)

select datestampdiff(type, 时间1, 时间2);
上一篇下一篇

猜你喜欢

热点阅读