mysql日期选择函数

来源:互联网 发布:mac版qq群文件 编辑:程序博客网 时间:2024/05/01 20:41
mysql日期选择函数
选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒
设定日期:set @dt = '2013-09-10 07:15:30.123456';
1、选择日期
select date(@dt); -- 取日期:2013-09-10
select time(@dt); -- 取时间:07:15:30.123456
select year(@dt); -- 取年份:2013
select quarter(@dt); -- 取季度:3
select month(@dt); -- 取月份:9
select week(@dt); -- 取第N周:36
select day(@dt); -- 取当前日:10
select hour(@dt); -- 取小时:7
select minute(@dt); -- 取分钟:15
select second(@dt); -- 取秒:30
select microsecond(@dt); -- 取毫秒:123456

2. 用户Extract()函数,可以上面实现类似的功能:
select extract(year from @dt); -- 取年份:2013
select extract(quarter from @dt); -- 取季度:3
select extract(month from @dt); -- 取月份:9
select extract(week from @dt); -- 取第N周:36
select extract(day from @dt); -- 取当前日:10
select extract(hour from @dt); -- 取小时:7
select extract(minute from @dt); -- 取分钟:15
select extract(second from @dt); -- 取秒:30
select extract(microsecond from @dt); -- 取毫秒:123456

此外,还支持下面的功能:选取指定的开始到结束部分。
select extract(year_month from @dt); -- 201309
select extract(day_hour from @dt); -- 1007
select extract(day_minute from @dt); -- 100715
select extract(day_second from @dt); -- 10071530
select extract(day_microsecond from @dt); -- 10071530123456
select extract(hour_minute from @dt); -- 715
select extract(hour_second from @dt); -- 71530
select extract(hour_microsecond from @dt); -- 71530123456
select extract(minute_second from @dt); -- 1530
select extract(minute_microsecond from @dt); -- 1530123456
select extract(second_microsecond from @dt); -- 30123456

3、dayof函数:dayofweek(), dayofmonth(), dayofyear()
分别返回日期参数,在一周、一月、一年中的位置。
set @dt = '2013-09-10';
select dayofweek(@dt); -- 3
select dayofmonth(@dt); -- 10
select dayofyear(@dt); -- 253
日期 '2013-09-10' 是一周中的第3天(1 = Sunday, 2 = Monday, ..., 7 = Saturday);一月中的第 10 天;一年中的第 253 天。

4、week函数:week(), weekofyear(), dayofweek(), weekday(), yearweek()
set @dt = '2013-09-10';
select week(@dt); -- 36。“某天”是位于一年中的第几周。
select week(@dt,3); -- 37
select weekofyear(@dt); -- 37。将该日期的阳历周以数字形式返回,范围是从 1 到 53 。它是一个兼容度函数,相当于 WEEK(date ,3) 。
select dayofweek(@dt); -- 3。返回“某天”在一周中的位置,(1 = Sunday, 2 = Monday, ..., 7 = Saturday)
select weekday(@dt); -- 1。返回“某天”在一周中的位置,(0 = Monday, 1 = Tuesday, ..., 6 = Sunday)
select yearweek(@dt); -- 201336。year(2013) + week 位置(31)

WEEK(date [,mode ]):该函数返回 date 对应的星期数。 WEEK() 的双参数形式允许你指定该星期是否起始于周日或周一, 以及返回值的范围是否为从 0 到 53 或从 1 到 53 。若 mode 参数被省略,则使用 default_week_format 系统自变量的值。

5、返回星期和月份名称函数:dayname(), monthname()
set @dt = '2013-09-10';
select dayname(@dt); -- Tuesday
select monthname(@dt); -- September

6、last_day()函数:返回月份中的最后一天。
select last_day('2013-09-10'); -- 2013-09-30

想得到当前月份中有多少天,可以这样来计算:
mysql> select day(last_day(2013-09-10)) as days;
结果:30

0 0