1.1获得当前日期+时间(date+time)函数:now()
MySQL> selectnow();+———————+
| now() |
+———————+
| -04-08 20:56:19 |
+———————+
除了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() |
+———————+———-+———————+
| -04-08 20:57:46 | 0 | -04-08 20:57:46 |
+———————+———-+———————+mysql> select sysdate(), sleep(3), sysdate();+———————+———-+———————+
| sysdate() | sleep(3) | sysdate() |
+———————+———-+———————+
| -04-08 20:58:47 | 0 | -04-08 20:58:50 |
+———————+———-+———————+
可以看到,虽然中途sleep3秒,但now()函数两次的时间值是相同的;sysdate()函数两次得到的时间值相差3秒。MySQLManual中是这样描述sysdate()的:Returnthetimeatwhichthefunctionexecutes。
sysdate()日期时间函数,一般情况下很少用到。
2.获得当前日期(date)函数:curdate()
mysql> selectcurdate();+————+
| curdate() |
+————+
| -04-08 |
+————+
其中,下面的两个日期函数等同于curdate():
current_date()
,current_date
3.获得当前时间(time)函数:curtime()
mysql> selectcurtime();+———–+
| curtime() |
+———–+
| 21:00:11 |
+———–+
其中,下面的两个时间函数等同于curtime():
current_time()
,current_time
4.获得当前UTC日期时间函数:utc_date(),utc_time(),utc_timestamp()
mysql> selectutc_timestamp(), utc_date(), utc_time(),now();+———————+————+————+———————+
| utc_timestamp() | utc_date() | utc_time() | now() |
+———————+————+————+———————+
| -04-08 13:01:32 | -04-08 | 13:01:32 |-04-08 21:01:32 |
+———————+————+————+———————+
因为我国位于东八时区,所以本地时间=UTC时间+8小时。UTC时间在业务涉及多个国家和地区的时候,非常有用。
二、MySQL日期时间Extract(选取)函数。
1.选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒
set @dt = ’-09-10 07:15:30.123456′;select date(@dt); — -09-10
select time(@dt); — 07:15:30.123456
select year(@dt); —
select quarter(@dt); — 3
select month(@dt); — 9
select week(@dt); — 36
select day(@dt); — 10
select hour(@dt); — 7
select minute(@dt)