函数注释:
CURDATE()函数:用于返回当前日期,只包含年、月、日部分,格式为YYYY-MM-DD;
DATE_SUB() 函数:从日期减去指定的时间间隔。
INTERVAL 关键字:用于添加或减去日期和时间值。
WEEKDAY()函数:用于查找给定日期的工作日值——返回一个日期的索引值 周一为0 周二为1...如果今天是周五 weekday(curdate())则返回 4。
STR_TO_DATE(str,format)函数:是将时间格式的字符串(str),按照所提供的显示格(format)转换为DATETIME类型的值。
concat()函数:将多个字符串连接成一个字符串。
DATE_FORMAT(date,format)函数:则是把数据库的日期转换为对应的字符串格式;
last_day(date):用于获取指定日期的给定月份的最后一天;
MAKEDATE()函数:根据年份和天数值创建并返回日期。
QUARTER()函数:用于返回给定日期值的一年的季度。它返回一个从1到4的数字。
YEAR()函数接受date参数,并返回日期的年份。
NOW()函数:以"YYYY-MM-DD HH:MM:DD"或"YYYYMMDDHHMMSS.uuuuuuu"格式的字符串或数字返回配置的时区中的当前日期和时间
-
获取当前周第一天和最后一天日期
# 当前周第一天(周一为周的第一天)
SELECT DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) DAY);
# 当前周第一天(周日为周的第一天)
SELECT DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) + 1 DAY);
# 当前周最后一天(周日为最后一天)
SELECT DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 6 DAY);
# 当前周最后一天(周六为最后一天)
SELECT DATE_SUB(CURDATE(),INTERVAL WEEKDAY(CURDATE()) - 5 DAY);
-
获取当前月第一天和最后一天日期
# 当前月第一天
SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(CURDATE(),'%Y-%m-'),'01'), '%Y-%m-%d');
# 当前月最后一天
SELECT LAST_DAY(CURDATE());
-
获取上个月第一天和最后一天
# 上个月第一天
SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH ,'%Y-%m-'),'01'), '%Y-%m-%d');
# 上个月最后一天
SELECT LAST_DAY(CURDATE() - INTERVAL 1 MONTH );
-
获取上个月第一天和最后一天
# 上个月第一天
SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH ,'%Y-%m-'),'01'), '%Y-%m-%d');
# 上个月最后一天
SELECT LAST_DAY(CURDATE() - INTERVAL 1 MONTH );
-
获取下个月第一天和最后一天
# 下个月第一天
SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(CURDATE() + INTERVAL 1 MONTH ,'%Y-%m-'),'01'), '%Y-%m-%d');
# 下个月最后一天
SELECT LAST_DAY(CURDATE() + INTERVAL 1 MONTH );
-
获取下个月第一天和最后一天
# 下个月第一天
SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(CURDATE() + INTERVAL 1 MONTH ,'%Y-%m-'),'01'), '%Y-%m-%d');
# 下个月最后一天
SELECT LAST_DAY(CURDATE() + INTERVAL 1 MONTH );
-
获取当季第一天和最后一天
# 当季第一天
SELECT MAKEDATE(YEAR(CURDATE()),1) + INTERVAL QUARTER(CURDATE())*3-3 MONTH;
# 当季最后一天
SELECT LAST_DAY(MAKEDATE(YEAR(CURDATE()),1) + INTERVAL QUARTER(CURDATE())*3-1 MONTH);
-
获取当年第一天和最后一天日期
# 当年第一天
SELECT str_to_date(CURDATE(year(NOW()),'-01-01'), '%Y-%m-%d');
# 当年最后一天
SELECT str_to_date(concat(year(NOW()),'-12-31'), '%Y-%m-%d');