MySQL 的时间函数 大全
一、MySQL获得当前日期时间函数
1.1 获得当前日期+ 时间(date + time)函数:now() mysql
> select now();
+ -- ---------------- ---+
| now() |
+ -- -------------------+
| 2008 - 08 - 08 22 : 20 : 46 |
+ -- --- ----------------+
除了now()函数能获得当前的日期时间外,MySQL中还有下面的函数:
current_timestamp ()
, current_timestamp
,localtime()
,localtime
, localtimestamp -- (v4.0.6)
,localtimestamp() -- (v4.0.6)
这些日期时间函数,都等同于now()。鉴于now()函数简短易记,建议总是使用now()来替代上面列出的函数。
1.2 获得当前日期+ 时间(date + time)函数:sysdate() sysdate()日期时间函数跟now()类似,不同之处在于:now()在执行开始时值就得到了, sysdate()在函数执行时动态得到值。看下面的例子就明白了:mysql
> select now(), sleep( 3 ), now();
+ -- -------------------+--- -------+---------------------+
| now() | sleep( 3 ) | now() |
+ -- --- ----------------+----------+---------------------+
| 2008 - 08 - 08 22 : 28 : 21 | 0 | 2008 - 08 - 08 22 : 28 : 21 |
+ -- -------------------+-- --------+---------------------+
mysql > select sysdate(), sleep( 3 ), sysdate();
+ -- -------------------+----------+------------------- --+
| sysdate() | sleep( 3 ) | sysdate() |
+ -- -------------------+---------- +---------------------+
| 2008 - 08 - 08 22 : 28 : 41 | 0 | 2008 - 08 - 08 22 : 28 : 44 |
+ - - -------------------+----------+------------------ ---+
可以看到,虽然中途sleep 3 秒,但now()函数两次的时间值是相同的; sysdate()函数两次得到的时间值相差 3 秒。MySQL Manual中是这样描述sysdate()的:Return the time at which the function executes。sysdate()日期时间函数,一般情况下很少用到。
2 .获得当前日期(date)函数:curdate() mysql
> select curdate();
+ -- ----------+
| curdate() |
+ -- -------- --+
| 2008 - 08 - 08 |
+ -- ----------+
其中,下面的两个日期函数等同于curdate():
current_date ()
, current_date
3 .获得当前时间(time )函数:curtime() mysql
> select curtime();
+ -- ---------+
| curtime() |
+ -- ---------+
| 22 : 41 : 30 |
+ -- ---------+
其中,下面的两个时间函数等同于curtime():
current_time ()
, current_time
4 .获得当前UTC日期时间函数:utc_date(), utc_time(), utc_timestamp() mysql
> select utc_timestamp(), utc_date(), utc_time(), now()
+ -- -------------------+------ ------+------------+---------------------+
| utc_timestamp() | utc_date() | utc_time() | now() |
+ -- -------------------+------------+----- -------+---------------------+
| 2008 - 08 - 08 14 : 47 : 11 | 2008 - 08 - 08 | 14 : 47 : 11 | 2008 - 08 - 08 22: 47 : 11 |
+ -- -------------------+------------ +------------+---------------------+
因为我国位于东八时区,所以本地时间 = UTC时间 + 8 小时。UTC时间在业务涉及多个国家和地区的时候,非常有用。
二、MySQL日期时间Extract(选取)函数。
1 .选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒
set @dt = ' 2008-09-10 07:15:30.123456 ' ;
select date( @ dt ); -- 2008-09-10
select time( @dt ); -- 07:15:30.123456
select year ( @dt ); -- 2008
select quarter( @dt ); -- 3
select month ( @dt ) ; -- 9
select week( @dt ); -- 36
select day ( @dt ); -- 10
select hour( @dt ); -- 7
select minute( @dt ); -- 15
select second( @dt ) ; -- 30