MySQLdatediff(date1,date2):两个日期相减date1-date2,返回天数。selectdatediff('2008-08-08','2008-08-01');--7selectdatediff('2008-08-01','2008-08-08');---7一、MySQL获得当前日期时间函数1.1获得当前日期+时间(date+time)函数:now()mysql>selectnow();+---------------------+|now()|+---------------------+|2008-08-0822: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>selectnow(),sleep(3),now();+---------------------+----------+---------------------+|now()|sleep(3)|now()|+---------------------+----------+---------------------+|2008-08-0822:28:21|0|2008-08-0822:28:21|+---------------------+----------+---------------------+mysql>selectsysdate(),sleep(3),sysdate();+---------------------+----------+---------------------+|sysdate()|sleep(3)|sysdate()|+---------------------+----------+---------------------+|2008-08-0822:28:41|0|2008-08-0822:28:44|+---------------------+----------+---------------------+可以看到,虽然中途sleep3秒,但now()函数两次的时间值是相同的;sysdate()函数两次得到的时间值相差3秒。MySQLManual中是这样描述sysdate()的:Returnthetimeatwhichthefunctionexecutes。sysdate()日期时间函数,一般情况下很少用到。2.获得当前日期(date)函数:curdate()mysql>selectcurdate();+------------+|curdate()|+------------+|2008-08-08|+------------+其中,下面的两个日期函数等同于curdate():current_date(),current_date3.获得当前时间(time)函数:curtime()mysql>selectcurtime();+-----------+|curtime()|+-----------+|22:41:30|+-----------+其中,下面的两个时间函数等同于curtime():current_time(),current_time4.获得当前UTC日期时间函数:utc_date(),utc_time(),utc_timestamp()mysql>selectutc_timestamp(),utc_date(),utc_time(),now()+---------------------+------------+------------+---------------------+|utc_timestamp()|utc_date()|utc_time()|now()|+---------------------+------------+------------+---------------------+|2008-08-0814:47:11|2008-08-08|14:47:11|2008-08-0822:47:11|+---------------------+------------+------------+---------------------+因为我国位于东八时区,所以本地时间=UTC时间+8小时。UTC时间在业务涉及多个国家和地区的时候,非常有用。二、MySQL日期时间Extract(选取)函数。1.选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒set@dt='2008-09-1007:15:30.123456';selectdate(@dt);--2008-09-10selecttime(@dt);--07:15:30.123456selectyear(@dt);--2008selectquarter(@dt);--3selectmonth(@dt);--9selectweek(@dt);--36selectday(@dt);--10selecthour(@dt);--7selectminute(@dt);--15selectsecond(@dt);--30selectmicrosecond(@dt);--1234562.MySQLExtract()函数,可以上面实现类似的功能:set@dt='2008-09-1007:15:30.123456';selectextract(yearfrom@dt);--2008selectextract(quarterfrom@dt);--3selectextract(monthfrom@dt);--9selectextract(weekfrom@dt);--36selectextract(dayfrom@dt);--10selectextract(hourfrom@dt);--7selectextract(minutefrom@dt);--15selectextract(secondfrom@dt);--30selectextract(microsecondfrom@dt);--123456selectextract(year_monthfrom@dt);--200809selectextract(day_hourfrom@dt);--1007sele...