set @dt = '2008-08-08'; select dayofweek(@dt); -- 6select dayofmonth(@dt); -- 8select dayofyear(@dt); -- 221日期 '2008-08-08' 是一周中的第 6 天(1 = Sunday, 2 = Monday, ..., 7 = Saturday);一月中的第 8 天;一年中的第 221 天。 4. MySQL week... 函数:week(), weekofyear(), dayofweek(), weekday(), yearweek() set @dt = '2008-08-08'; select week(@dt); -- 31select week(@dt,3); -- 32select weekofyear(@dt); -- 32 select dayofweek(@dt); -- 6select weekday(@dt); -- 4 select yearweek(@dt); -- 200831MySQL week() 函数,可以有两个参数,具体可看手册。 weekofyear() 和 week() 一样,都是计算“某天”是位于一年中的第几周。 weekofyear(@dt) 等价于 week(@dt,3)。 MySQL weekday() 函数和 dayofweek() 类似,都是返回“某天”在一周中的位置。不同点在于参考的标准, weekday:(0 = Monday, 1 = Tuesday, ..., 6 = Sunday); dayofweek:(1 = Sunday, 2 = Monday, ..., 7 = Saturday) MySQL yearweek() 函数,返回 year(2008) + week 位置(31)。 5. MySQL 返回星期和月份名称函数:dayname(), monthname() set @dt = '2008-08-08'; select dayname(@dt); -- Fridayselect monthname(@dt); -- August思考,如何返回中文的名称呢? 6. MySQL last_day() 函数:返回月份中的最后一天。 select last_day('2008-02-01'); -- 2008-02-29select last_day('2008-08-08'); -- 2008-08-31MySQL last_day() 函数非常有用,比如我想得到当前月份中有多少天,可以这样来计算: mysql> select now(), day(last_day(now())) as days; +---------------------+------+| now() | days |+---------------------+------+| 2008-08-09 11:45:45 | 31 |+---------------------+------+三、MySQL 日期时间计算函数 1. MySQL 为日期增加一个时间间隔:date_add() set @dt = now(); select date_add(@dt, interval 1 day); -- add 1 dayselect date_add(@dt, interval 1 hour); -- add 1 hourselect date_add(@dt, interval 1 minute); -- ...select date_add(@dt, interval 1 second);select date_add(@dt, interval 1 microsecond);select date_add(@dt, interval 1 week);select date_add(@dt, interval 1 month);select date_add(@dt, interval 1 quarter);select date_add(@dt, interval 1 year);select date_add(@dt, interval -1 day); -- sub 1 dayMySQL adddate(), addtime()函数,可以用 date_add() 来替代。下面是 date_add() 实现 addtime() 功能示例: mysql> set @dt = '2008-08-09 12:12:33'; mysql>mysql> select date_add(@dt, interval '01:15:30' hour_second); +------------------------------------------------+| date_add(@dt, interval '01:15:30' hour_second) |+------------------------------------------------+| 2008-08-09 13:28:03 &nb