MySQL学习记录--操作时间数据
1、返回日期的时间函数
date_add() : 可以为指定日期增加/减少任意一段时间间隔。下面举例将当前日期增加一个月和减少一个月
mysql> select date_add(current_date(), interval 1 month) as add_one_month; +---------------+ | add_one_month | +---------------+ | 2016-12-30 | +---------------+ 1 row in set (0.00 sec) mysql> select date_add(current_date(), interval -1 month) as reduce_one_month; +------------------+ | reduce_one_month | +------------------+ | 2016-10-30 | +------------------+ 1 row in set (0.00 sec)
格式:date_add('要修改的时间',interval 数量 时间间隔类型), 下面展示一些常见的时间间隔类型
间隔名称 | 描述 |
Second | 秒数 |
Minute | 分钟数 |
Hour | 小时数 |
Day | 天数 |
Month | 月份 |
Year | 年份 |
Minute_second | 分钟和秒,以":"分隔 |
Hour_second | 小时、分钟和秒,以":"分隔 |
Year_month | 年份和月份,以"-"分隔 |
下面对时间间隔后三种举例:
①、将当前时间增加3小时20分钟
mysql> select current_timestamp; -- 当前时间 +---------------------+ | current_timestamp | +---------------------+ | 2016-11-30 15:22:46 | +---------------------+ 1 row in set (0.00 sec) mysql> select date_add(current_timestamp, interval '3:20:00' Hour_second) as add_HourSecond; +---------------------+ | add_HourSecond | +---------------------+ | 2016-11-30 18:42:49 | +---------------------+ 1 row in set (0.00 sec)
②、将日期'2000-01-01'增加16年10个月
mysql> select date_add('2000-01-01', interval '16-10' Year_month) as add_Year_month; +----------------+ | add_Year_month | +----------------+ | 2016-11-01 | +----------------+ 1 row in set (0.00 sec)
函数last_day() : 返回所求月份的最后一天
举例:求"2016-01-01"该月的最后一天
mysql> select last_day('2016-01-01'); +------------------------+ | last_day('2016-01-01') | +------------------------+ | 2016-01-31 | +------------------------+ 1 row in set (0.00 sec)
无论提供的参数是date型还是datetime型,last_day()函数都将返回一个date值
2、返回字符串的时间函数
dayname() : 返回所求的日期是星期几
举例:求当前日期是星期几
mysql> select dayname(current_date); +-----------------------+ | dayname(current_date) | +-----------------------+ | Wednesday | +-----------------------+ 1 row in set (0.00 sec)
year()、month()、day()、time()...提取部分时间
mysql> select year(current_date),month(current_date),day(current_date),time(current_timestamp); +--------------------+---------------------+-------------------+-------------------------+ | year(current_date) | month(current_date) | day(current_date) | time(current_timestamp) | +--------------------+---------------------+-------------------+-------------------------+ | 2016 | 11 | 30 | 16:12:57 | +--------------------+---------------------+-------------------+-------------------------+ 1 row in set (0.00 sec)
3、返回数字的时间函数
datediff() : 计算两个日期相隔的天数
举例:计算"2000-01-01"距离现在有多少天
mysql> select datediff('2016-11-30', '2000-01-01'); +--------------------------------------+ | datediff('2016-11-30', '2000-01-01') | +--------------------------------------+ | 6178 | +--------------------------------------+ 1 row in set (0.00 sec)
注:datediff()函数会忽略参数中的时钟值。
sql server 同样具备datediff()函数,但可以在指定时间间隔的类型(如年、月、日、小时等)。sql server 实现上一个例子的方法:
select datediff(day, '2016-11-30', '2000-01-01');