五. 从一个日期时间中获取相应的年,月,日,时,分,秒信息
用一个 now() 当前日期中获取。
五.一 获取年 year(date)
select year(now());
五.二 获取季度 quarter(date)
select quarter(now());
取值范围是 1~4. 其中,MySQL中: 1~3月是第一季度, 4~6是第二季度, 7~9是第三季度, 10~12是第四季度。
五.三 获取月 month(date)
select month(now());
取值范围是 1~12 。
五.四 获取周 week(date)
当前日期,是第几周。
select week(now()),week('2020-01-01'),week('2020-01-06');
取值范围是 0~52, 从0 开始的。 一年最多是53个星期天。
五.五 获取天 dayofyear(date), dayofmonth(date),dayofweek(date)
获取天的话,有三种意思。 一种是 在这一年中的天,一种是在这月中的天,一种是在这个星期的天。
通常指的是在这一月中的天。
五.五.一 获取在这一年中的天 dayofyear(date)
select dayofyear(now());
取值范围是 1~366.
五.五.二 获取在这一月中的天 dayofmonth(date)
select dayofmonth(now());
取值范围是 1~31.
五.五.三 获取在这一周中的天 dayofweek(date)
select dayofweek(now());
其中,星期日为第一天,显示1. 今天27号,是星期三,显示4.
取值范围是 1~7.
五.六 获取小时 hour(date)
select now(),hour(now());
取值范围是 0~23 .
五.七 获取分钟 minute(date)
select now(),minute(now());
取值范围为 0~59
五.八 获取秒 second(date)
select now(), second(now());
取值范围为 0~59.
五.九 获取毫秒 microsecond(date)
now() 看不出毫秒数,自己构建 字符串的日期。 秒与毫秒之间,用. 隔开
select microsecond('2019-11-27 15:09:08.234');
取值范围为 000000~999999
六. 获取日期的指定值 Extract(type from date)
在 章节五 部分,可以通过 函数 如 year(), month() 等来获取解析 某个日期的年,月,日,时,分,秒等信息。 MySQL 也提供了 extract() 函数来统一获取指定值。 其中,type就是指定类型。
六.一 extract 方法中 type的指定类型有哪些
六.二 extract(type from date)的举例
获取年,获取月,获取日,获取年和月,获取天和小时
select now(),extract(year from now()) as '年',extract(month from now()) as '月', extract(year_month from now()) as '年月',extract(day_hour from now()) as '天小时';
但type 中并没有年和日 这样的拼法。
只能拼接 type 提供的类型。 所以,拼接不成 年月日, 月日这样的。
建议,对于复杂的类型,使用 函数获取后进行拼接。简单的,直接用 extract(type from date)
七. UTC 世界标准时间
与当前所处的时区无关。 显示的是世界时间。
七.一 当前的日期 UTC_DATE()
会按照’YYYY-MM-dd’ 或者 'YYYYMMDD’的格式展示出来. 可以加数字 0,1,100.
select now(), utc_date();
七.二 当前的时间 UTC_TIME()
会按照 ‘HH:mm:SS’ 或者 'HHmmSS’的格式展示出来。 可以加数字,0,1,100
select now(),utc_time();
老蝴蝶忘记截屏了,在第二天早上28号,重新生成一下。
展示的是
时间并不是当前的时间,而是世界时间。
八. 时间和秒转换函数
可以将 时间转换成对应的秒数, 也可以将秒数转换成相应的时间。
时间转换成秒数公式:
总秒数= 小时 * 3600+分钟 * 60+秒。
秒数转换成时间公式:
小时 hour= 总秒数/3600
分钟 minute=(总秒数-3600 * hour)/60
秒 second= 总秒数-(3600 * hour+60 * minute)
就是这个公式计算,只是mysql提供了相应的函数。
八.一 时间转换成秒 time_to_sec(time)
将时间按照上面的公式,转换成相应的秒。
select now(),time_to_sec(now());
最终秒数为 57276
其中, 153600+5460+36=57276
八.二 秒转换成时间 sec_to_time(秒数)
与 time_to_sec(time) 互为反函数。
select sec_to_time(57276);