返回当前时间
1.1 获得当前日期+时间(date + time)函数:now()
除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:
current_timestamp() current_timestamp
localtime() localtime
localtimestamp() localtimestamp
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2018-12-14 |
+----------------+
1 row in set (0.05 sec)
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2018-12-14 10:22:27 |
+---------------------+
1 row in set (0.05 sec)
mysql> select current_timestamp();
+---------------------+
| current_timestamp() |
+---------------------+
| 2018-12-14 10:24:27 |
+---------------------+
1 row in set (0.05 sec)
mysql> select current_timestamp;
+---------------------+
| current_timestamp |
+---------------------+
| 2018-12-14 10:24:41 |
+---------------------+
1 row in set (0.05 sec)
这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。
1.2 获得当前日期+时间(date + time)函数:sysdate()
mysql> select sysdate();
+---------------------+
| sysdate() |
+---------------------+
| 2018-12-14 10:25:20 |
+---------------------+
1 row in set (0.05 sec)
sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate()
在函数执行时动态得到值。
2. 获得当前日期(date)函数:curdate()
其中,下面的两个日期函数等同于 curdate(): current_date(),current_date
mysql> select curDate();
+------------+
| curDate() |
+------------+
| 2018-12-14 |
+------------+
1 row in set (0.05 sec)
mysql> select current_date
-> ;
+--------------+
| current_date |
+--------------+
| 2018-12-14 |
+--------------+
1 row in set (0.05 sec)
mysql> select current_date();
+----------------+
| current_date() |
+----------------+
| 2018-12-14 |
+----------------+
1 row in set (0.05 sec)
3. 获得当前时间(time)函数:curtime()
其中,下面的两个时间函数等同于 curtime():current_time(),current_time
mysql> select curtime();
+-----------+
| curtime() |
+-----------+
| 10:34:35 |
+-----------+
1 row in set (0.05 sec)
mysql> select current_time();
+----------------+
| current_time() |
+----------------+
| 10:34:43 |
+----------------+
1 row in set (0.05 sec)
4. 获得当前 UTC 日期时间函数:
utc_date(), utc_time(), utc_timestamp()
mysql> select utc_date();
+------------+
| utc_date() |
+------------+
| 2018-12-14 |
+------------+
1 row in set (0.05 sec)
mysql> select utc_time();
+------------+
| utc_time() |
+------------+
| 02:35:51 |
+------------+
1 row in set (0.05 sec)
mysql> select utc_timestamp();
+---------------------+
| utc_timestamp() |
+---------------------+
| 2018-12-14 02:36:03 |
+---------------------+
1 row in set (0.05 sec)
操作时间
时间偏移
- date_add(‘要操作的时间’, interval 时间偏移量 偏移时间类型)
分别往后/前偏移一个月的时间
mysql> select date_add(now(), interval 1 month);
+-----------------------------------+
| date_add(now(), interval 1 month) |
+-----------------------------------+
| 2019-01-14 10:45:52 |
+-----------------------------------+
1 row in set (0.05 sec)
mysql> select date_add(now(), interval -1 month);
+------------------------------------+
| date_add(now(), interval -1 month) |
+------------------------------------+
| 2018-11-14 10:46:15 |
+------------------------------------+
1 row in set (0.05 sec)
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2018-12-14 10:46:26 |
+---------------------+
1 row in set (0.05 sec)
- 时间类型
时间类型 | 描述 |
---|---|
microsecond | 微秒 |
Second | 秒 |
Minute | 分 |
Hour | 时 |
Day | 天 |
Month | 月 |
year | 年 |
week | 周 |
quarter | 季 |
Minute_second | 分:秒,以 : 隔开 |
Hour_minute | 时:分:秒 以 : 隔开 |
Year-month | 年-月 ,以 - 隔开 |
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2018-12-14 10:59:36 |
+---------------------+
1 row in set (0.05 sec)
mysql> select date_add(now(), interval '10:10' hour_minute);
+-----------------------------------------------+
| date_add(now(), interval '10:10' hour_minute) |
+-----------------------------------------------+
| 2018-12-14 21:10:30 |
+-----------------------------------------------+
1 row in set (0.06 sec)
mysql> select date_add(now(), interval '10-10' hour_minute);
+-----------------------------------------------+
| date_add(now(), interval '10-10' hour_minute) |
+-----------------------------------------------+
| 2018-12-14 21:10:44 |
+-----------------------------------------------+
1 row in set (0.05 sec)
mysql> select date_add(now(), interval '10 10' hour_minute);
+-----------------------------------------------+
| date_add(now(), interval '10 10' hour_minute) |
+-----------------------------------------------+
| 2018-12-14 21:10:53 |
+-----------------------------------------------+
1 row in set (0.05 sec)
date_sub()
MySQL 为日期减去一个时间间隔:date_sub();
MySQL date_sub() 日期时间函数 和date_add() 用法一致,不再赘述。
时间之间的间隔符号,我发现对间隔似乎没有太大要求~ 我使用的是MySQL版本是:mysql-8.0.13-winx64,不知道会不会关乎到版本!!!
mysql> select now();
+---------------------+
| now() |
+---------------------+
| 2018-12-14 11:07:38 |
+---------------------+
1 row in set (0.05 sec)
mysql> select date_add(now(), interval '10' hour_minute);
+--------------------------------------------+
| date_add(now(), interval '10' hour_minute) |
+--------------------------------------------+
| 2018-12-14 11:17:45 |
+--------------------------------------------+
1 row in set (0.05 sec)
last_date()
返回当前月最后一天
无论提供的参数是date型还是datetime型,last_day()函数都将返回一个date值
mysql> select last_day(now());
+-----------------+
| last_day(now()) |
+-----------------+
| 2018-12-31 |
+-----------------+
1 row in set (0.05 sec)
year()、month()、day()、time()…提取部分时间
mysql> select year(now()),month(now()),day(now()),hour(now()),minute(now()),second(now());
+-------------+--------------+------------+-------------+---------------+---------------+
| year(now()) | month(now()) | day(now()) | hour(now()) | minute(now()) | second(now()) |
+-------------+--------------+------------+-------------+---------------+---------------+
| 2018 | 12 | 14 | 11 | 21 | 4 |
+-------------+--------------+------------+-------------+---------------+---------------+
1 row in set (0.05 sec)
dayname(date)
返回指定日期是星期几
mysql> select dayname(now());
+----------------+
| dayname(now()) |
+----------------+
| Friday |
+----------------+
1 row in set (0.05 sec)
datediff()
返回两日期相隔天数
mysql> select datediff(now(), '2018-10-10');
+-------------------------------+
| datediff(now(), '2018-10-10') |
+-------------------------------+
| 65 |
+-------------------------------+
1 row in set (0.05 sec)
mysql> select datediff(now(), '2028-10-10');
+-------------------------------+
| datediff(now(), '2028-10-10') |
+-------------------------------+
| -3588 |
+-------------------------------+
1 row in set (0.05 sec)
TIMESTAMPDIFF
TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)。
说明:
返回日期或日期时间表达式datetime_expr1 和datetime_expr2 之间的整数差。其结果的单位由interval 参数给出。该参数必须是以下值的其中一个:
FRAC_SECOND。表示间隔是毫秒
SECOND。秒
MINUTE。分钟
HOUR。小时
DAY。天
WEEK。星期
MONTH。月
QUARTER。季度
YEAR。年
TIMESTAMPADD
TIMESTAMPADD(interval,int_expr,datetime_expr)
将整型表达式int_expr 添加到日期或日期时间表达式 datetime_expr中。式中的interval和上文中列举的取值是一样的
//在当前日期增加一年
mysql> select timestampadd(year, 1 , now());
+-------------------------------+
| timestampadd(year, 1 , now()) |
+-------------------------------+
| 2019-12-14 11:41:26 |
+-------------------------------+
1 row in set (0.05 sec)
NUIX_TIMESTAMP
nuix_timestamp函数将字符串时间转换为时间戳
mysql> select unix_timestamp(now());
+-----------------------+
| unix_timestamp(now()) |
+-----------------------+
| 1544759125 |
+-----------------------+
1 row in set (0.05 sec)
from_unixtime
from_unixtime函数 用于将Unix 时间戳格式化为日常的时间格式
date为需要处理的参数(该参数是Unix 时间戳),可以是字段名,也可以直接是Unix 时间戳字符串
后面的 ‘%Y%m%d’ 主要是将返回值格式化
mysql> select from_unixtime(1544759125, '%Y-%m-%d');
+---------------------------------------+
| from_unixtime(1544759125, '%Y-%m-%d') |
+---------------------------------------+
| 2018-12-14 |
+---------------------------------------+
1 row in set (0.05 sec)
原文:https://blog.youkuaiyun.com/u012373815/article/details/70008023
data_format
DATE_FORMAT(date,format) 格式化日期格式
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 位 |
吃饭了吃饭了