3.日期和时间函数
3.1 curdate 和 current_date:返回当前系统的日期值
CURDATE() 和 CURRENT_DATE() 函数的作用相同,将当前日期按照“YYYY-MM-DD”或“YYYYMMDD”格式的值返回,具体格式根据函数用在字符串或数字语境中而定,返回 DATE 类型。
举例: SELECT CURDATE(),CURRENT_DATE(),CURRENT_DATE()+1;
3.2 curtime 和 current_time:获取系统当前时间
CURTIME() 和 CURRENT_TIME() 函数的作用相同,将当前时间以“HH:MM:SS”或“HHMMSS与数字相加的和”格式返回,具体格式根据函数用在字符串或数字语境中而定,返回 TIME 类型。
举例: SELECT CURTIME(),CURRENT_TIME(),CURRENT_TIME()+1;
3.3 now 和 sysdate: 获取当前时间日期
NOW() 和 SYSDATE() 函数的作用相同,都是返回当前日期和时间值,格式为“YYYY-MM-DD HH:MM:SS”或“YYYYMMDDHHMMSS”,具体格式根据函数用在字符串或数字语境中而定,返回datetime 类型。
举例: SELECT NOW(),SYSDATE(),NOW()+1;
3.4 unix_timestamp:获取UNIX时间戳
UNIX_TIMESTAMP(DATE) 若无参数调用,返回一个无符号整数类型的 UNIX 时间戳('1970-01-01 00:00:00’GMT之后的秒数)。
举例: SELECT UNIX_TIMESTAMP(),UNIX_TIMESTAMP(NOW()),UNIX_TIMESTAMP('1970-01-01 00:00:00');
3.5 from_unixtime: 时间戳转日期
FROM_UNIXTIME(unixtimestamp[,FORMAT]) 函数把 UNIX 时间戳转换为普通格式的日期时间值,与 UNIX_TIMESTAMP () 函数互为反函数。
有2个参数:
unix_timestamp:时间戳(秒)
format:要转化的格式 例如“”%Y-%m-%d“” 这样格式化之后的时间就是2017-11-30
举例: SELECT FROM_UNIXTIME(1607984822),FROM_UNIXTIME(0,'%Y-%m-%d %H:%i:%s');
3.6 month:获取指定日期的月份
MONTH(DATE) 函数返回指定 DATE 对应的月份,范围为 1~12。
举例: SELECT MONTH('2011-07-01'),MONTH(NOW());
3.7 monthname:获取指定日期月份的英文名称
MONTHNAME(DATE) 函数返回日期 DATE 对应月份的英文全名。
举例:SELECT MONTHNAME('2011-07-01'),MONTHNAME(NOW());
3.8 dayname:获取指定日期的星期名称
DAYNAME(DATE) 函数返回 DATE 对应的工作日英文名称,例如 Sunday、Monday等。
举例: SELECT NOW(),DAYNAME(NOW());
3.9 dayofweek:获取日期对应的周索引
DAYOFWEEK(d) 函数返回 d 对应的一周中的索引(位置)。1 表示周日,2 表示周一,……,7 表示周六。这些索引值对应于ODBC标准。
举例: SELECT NOW(),DAYOFWEEK(NOW());
3.10 week:获取指定日期是一年中的第几周
WEEK(DATE[,MODE]) 函数计算日期 DATE 是一年中的第几周。WEEK(DATE,MODE)函数允许指定星期是否起始于周日或周一,以及返回值的范围是否为 0~52 或 1~53。
WEEK函数接受两个参数:
• DATE 是要获取周数的日期。
• MODE 是一个可选参数,用于确定周数计算的逻辑。它允许指定本周是从星期一还是星期日开始,返回的周数应在 0 到 52 之间或 0 到 53 之间。
如果忽略 MODE 参数,默认情况下 WEEK 函数将使用 default_week_format 系统变量的值。
要获取 default_week_format 变量的当前值,请使用 SHOW VARIABLES 语句如下:SHOW VARIABLES LIKE 'default_week_format';
在我们的服务器中, default_week_format 的默认值为 0
举例: SELECT NOW(),WEEK(NOW());
3.11 dayofyear:获取指定日期在一年中的位置
DAYOFYEAR(d) 函数返回 d 是一年中的第几天,范围为 1~366。
举例: SELECT NOW(),DAYOFYEAR(NOW()),DAYOFYEAR('2020-12-31');
3.12 dayofmonth:获取指定日期在一个月的位置
DAYOFMONTH(d) 函数返回 d 是一个月中的第几天,范围为 1~31。
举例: SELECT NOW(),DAYOFMONTH(NOW()),DAYOFMONTH('2020-12-31');
3.13 year:获取年份
YEAR() 函数可以从指定日期值中来获取年份值。
举例: SELECT NOW(),YEAR(NOW()),YEAR('2020-12-31');
3.14 time_to_sec:将时间转换为秒值
TIME_TO_SEC(TIME) 函数返回将参数 TIME 转换为秒数的时间值,转换公式为“小时×3600+ 分钟 ×60+ 秒”。
举例: SELECT TIME_TO_SEC('09:00:06'),NOW(),TIME_TO_SEC(NOW());
3.15 sec_to_time:将秒值转换为时间格式
SEC_TO_TIME(seconds) 函数返回将参数 seconds 转换为小时、分钟和秒数的时间值。
举例: SELECT SEC_TO_TIME(32406),SEC_TO_TIME(32608);
3.16 date_add和adddate:向日期添加指定时间间隔
DATE_ADD(DATE,INTERVAL expr TYPE)
date:参数是合法的日期表达式。expr 参数是希望添加的时间间隔。
举例: SELECT DATE_ADD('2020-12-15', INTERVAL 16 DAY),ADDDATE('2020-12-15 09:03:28', INTERVAL 32 SECOND);
3.17 date_sub和subdate:日期减法运算
DATE_SUB(DATE,INTERVAL expr TYPE)
date:参数是合法的⽇期表达式。expr 参数是您希望添加的时间间隔。
举例: SELECT DATE_SUB('2020-12-31', INTERVAL 16 DAY),SUBDATE('2020-12-15 09:04:00',INTERVAL 32 SECOND);
3.18 addtime:时间加法运算
ADDTIME(TIME,expr) 函数用于执行时间的加法运算。添加 expr 到 TIME 并返回结果。其中:time 是一个时间或日期时间表达式,expr 是一个时间表达式。
举例: SELECT ADDTIME('2020-12-15 09:03:28','00:00:32'),ADDTIME('09:03:28','00:00:32');
3.19 subtime:时间减法运算
SUBTIME(TIME,expr) 函数用于执行时间的减法运算。
函数返回 time。expr 表示的值和格式 TIME 相同。time 是一个时间或日期时间表达式, expr 是一个时间。
举例:SELECT SUBTIME('2020-12-15 09:04:00','00:00:32'),SUBTIME('09:04:00','00:00:32');
3.20 datediff:获取两个日期的时间间隔
DATEDIFF(date1,date2) 返回时间 date1 减时间 date2 的天数。date1 和 date2 为日期或 DATE-AND-TIME 表达式。计算时只用到这些值的日期部分。
举例:SELECT DATEDIFF('2020-12-15','2020-12-31'),DATEDIFF(NOW(),'2020-12-14');
3.21 date_format:格式化指定的日期
DATE_FORMAT(date,format) 函数是根据 FORMAT 指定的格式显示 DATE 值。
DATE_FORMAT() 函数接受两个参数:
date:是要格式化的有效日期值
format:是由预定义的说明符组成的格式字符
串,每个说明符前面都有一个百分比字符(%)。
举例:SELECT DATE_FORMAT('2020-12-15','%Y%m%d'),DATE_FORMAT(NOW(),'%Y%m%d%H%i%s');
3.22 weekday:获取指定日期在一周内的索引位置
WEEKDAY(DATE) 返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。比 DAYOFWEEK(DATE)得到的数字小2.
举例:SELECT NOW(),WEEKDAY(NOW());
举例2: SELECT NOW(),DAYOFWEEK(NOW());
3.23 timestampdiff: 返回指定INTERVAL格式的时间差
举例: SELECT TIMESTAMPDIFF(SECOND,'2020-12-15 23:00:00','2020-12-16 00:00:01');