⭕️前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家(点击跳转到网站)⭕️
MySQL针对日期的处理
日期函数
SELECT CURDATE() -- 输出当前日期:2000-01-01
SELECT CURTIME() -- 输出当前时间:24:00:00
SELECT NOW() -- 输出全部时间:2000-01-01 24:00:00
SELECT DATE("2000-01-01 22:59:59") -- 输出年月日部分:2000-01-01
SELECT TIME("2000-01-01 22:59:59") -- 输出年月日部分:22:59:59
日期计算函数(对时间二次处理)
SELECT DATEDIFF("1999-01-01", "2000-01-01") -- 日期减法,前减后:-365
SELECT DATEDIFF("1999-01-01", CURDATE()) -- 日期减法,可用函数:-9148
SELECT DAY(CURDATE()) -- 返回当天是第几号
SELECT MONTH(CURDATE()) -- 返回当天是第几月
SELECT YEAR(CURDATE()) -- 返回当天是第几年
时间函数
SELECT HOUR("2000-01-01 22:12:23") -- 指定日期是第几点 22
SELECT MINUTE("2000-01-01 22:12:23") -- 指定日期是多少分钟 12
SELECT SECOND("2000-01-01 22:12:23") -- 指定日期的秒的部分
日期格式化函数
SELECT DATE_FORMAT("1999-01-01", "%Y-%d-%d") -- 返回指定日期的时间指定,格式y、m、d的大小是有区别的,年份大写返回完整,小写返回年份最后两位,月份日期省略,其他可以自定义
SELECT TIME_FORMAT("23:13:23", "%H-%i:%s") -- 按照指定格式格式化时间 23-13:23
日期比较函数
SELECT GREATEST("1999-01-01", "2000-01-01")-- 返回两个日期中的较大值。2000-01-01
SELECT LEAST("1999-01-01", "2000-01-01") -- 返回两个日期中的较小值。1999-01-01
其他常用函数
SELECT LAST_DAY("2000-01-02") -- 返回给定日期的所属月份的最后一天是多少
SELECT DAYOFWEEK("2000-01-19") -- 返回给定日期是星期几,其中1代表星期日,2代表星期一,以此类推。(注意这里的星期对应的)
SELECT DAYOFYEAR("2000-01-02") -- 返回给定日期是一年中的第几天。
SELECT WEEK("2000-02-01", 0) -- 返回给定日期是第几周,mode参数决定了周的开始是哪一天(0代表星期一,1代表星期日)
函数汇总
SELECT DATE_SUB(CURDATE(), INTERVAL 1 day) -- 用于从给定的日期中减去指定的时间间隔,unit 是时间间隔的单位,可以是以下值之一:
SELECT DATE_ADD(CURDATE(), INTERVAL 1 day) -- 和DATE_SUB相反
-- MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR 等,比如:举例为当前时间减去1天以后的日期
-- 举例:LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 MONTH)) --上个月最后一天
其他(后续会根据实际业务使用情况依次补充)
- 根据时间段,输出中间的每个日期,形成数组
ITH RECURSIVE dates(date) AS (
SELECT '2022-01-01' AS date
UNION ALL
SELECT DATE_ADD(date, INTERVAL 1 DAY) FROM dates WHERE date < '2022-01-10'
)
SELECT * FROM dates
- …