Mysql日期类型、时间戳、字符串常用函数及转换

时间获取

1.获取当天日期(日期类型):

mysql> select curdate();
+------------+
| 2018-05-28 |
+------------+
2.获取当前时间(日期类型):

mysql> select now();
+---------------------+
| 2018-05-28 13:10:40 |
+---------------------+
3.取得前一天日期(日期类型):

mysql> select date_sub(curdate(),interval 1 day);
+--------------+
| 2018-05-27   |
+--------------+
4.取得后一天日期(日期类型):

mysql> select date_add(curdate(),interval 1 day);
+------------+
| 2018-05-29 |
+------------+
5.获取当前月份(日期类型)

select month(now())   ////获取指定日期月份如:select month('2018-06-05')

+-----------+
| 5         |
+-----------+
6.获取当前年份(日期类型)

select year(now())    //获取指定日期年份如:select year('2018-06-05')

+-----------+
| 2018      |
+-----------+

相互转换

date(日期类型)、时间戳、字符串三者之间的相互转换
 

1.日期类型转字符串

select date_format(now(), '%Y-%m-%d');  

#结果:1452001082  
2.时间类型转unix时间戳

select unix_timestamp(now());  

#结果:1452001082  
3.字符串转日期类型

select str_to_date('2016-01-02', '%Y-%m-%d %H');  

#结果:2016-01-02 00:00:00  

4.字符串转unix时间戳

select unix_timestamp('2016-01-02');  

#结果:1451664000  
5.unix时间戳转日期类型

select from_unixtime(1451997924);  

#结果:2016-01-05 20:45:24  

6.unix时间戳转字符串

select from_unixtime(1451997924,'%Y-%d-%m');  

//结果:2016-01-05 20:45:24

举例:

//查询日期为当天的的记录,add_time为unix时间戳:

//方法一:效率高,适合数据量少的
select add_time,from_unixtime(add_time,'%Y-%m-%d'),curdate() ,date_add(curdate(),interval 1 day)
from ci_book
where add_time between unix_timestamp(curdate()) and unix_timestamp(date_add(curdate(),interval 1 day))

//方法二:效率低,但是写起来简单,适合数据量少的
select add_time,from_unixtime(add_time,'%Y-%m-%d'),curdate() ,date_add(curdate(),interval 1 day)
from ci_book
where from_unixtime(add_time,'%Y-%m-%d') = curdate()

附表

MySQL日期格式化(format)

猜你喜欢

转载自my.oschina.net/u/3477605/blog/1820048
今日推荐