Función de cálculo de diferencia horaria de MySQL y función de cálculo de conversión de fecha

Función de diferencia horaria de MySQL (TIMESTAMPDIFF, DATEDIFF), función de cálculo de conversión de fecha (date_add, day, date_format, str_to_date)

  1. Función de diferencia horaria (TIMESTAMPDIFF, DATEDIFF)

Debe usar MySQL para calcular la diferencia horaria, usar TIMESTAMPDIFF, DATEDIFF y registrar los resultados experimentales.

--0
select datediff(now(), now());
 
--2
select datediff('2023-09-22 23:59:00', '2023-09-20 00:00:00');
 
--2
select datediff('2023-09-22 00:00:00', '2023-09-20 23:59:00');
 
--1
select TIMESTAMPDIFF(DAY, '2023-09-20 23:59:00', '2023-09-22 00:00:00');
 
--2
select TIMESTAMPDIFF(DAY, '2023-09-20 00:00:00', '2023-09-22 00:00:00');
 
--2
select TIMESTAMPDIFF(DAY, '2023-09-20 00:00:00', '2023-09-22 12:00:00');
 
--2
select TIMESTAMPDIFF(DAY, '2023-09-20 00:00:00', '2023-09-22 23:59:00');
 
--71
select TIMESTAMPDIFF(HOUR, '2023-09-20 00:00:00', '2023-09-22 23:00:00');
 
--4260
select TIMESTAMPDIFF(MINUTE, '2023-09-20 00:00:00', '2023-09-22 23:00:00');
  1. Función de cálculo de conversión de fecha (date_add, day, date_format, str_to_date)

Uso de la función DATE_ADD()

Definición y uso: la función DATE_ADD() agrega un intervalo de tiempo específico a una fecha.

DATE_ADD(date,INTERVAL expr type)

El parámetro de fecha es una expresión de fecha legal. El parámetro expr es el intervalo de tiempo que desea agregar.
El parámetro de tipo puede tener los siguientes valores: DÍA, SEMANA, etc.

DATE_ADD("2023-09-20 ",INTERVAL 2 day)

结果:"2023-09-22 "
DATE_ADD("2023-09-20 ",INTERVAL -2 day)

结果:"2023-09-18 "

date_format(): Devuelve la hora y fecha formateadas

gramática:

DATE_FORMAT(date,format);

parámetro:

fecha: la hora y fecha válidas que deben formatearse

formato: una cadena en un formato predefinido, con un signo de porcentaje (%) delante de cada especificador.

SELECT id,
       name,
       DATE_FORMAT(start_time, '%Y-%m-%d %H:%i:%S') start_time,
       DATE_FORMAT(end_time, '%Y-%m-%d %H:%i:%S')   end_time
FROM user

La función STR_TO_DATE se utiliza para convertir una cadena en un valor de fecha/hora

Las funciones de la función STR_TO_DATE y la función DATE_FORMAT son opuestas.

Formato de sintaxis

STR_TO_DATE(cadena,formato)

srt: cadena a formatear como fecha (cadena de entrada)

formato: la cadena de formato a utilizar

Si str no se puede analizar según el formato, la función STR_TO_DATE devolverá NULL

Si alguno de los parámetros es NULL, la función STR_TO_DATE devuelve NULL

Lista de caracteres de descripción predefinida:
Insertar descripción de la imagen aquí
formatos de formato utilizados habitualmente
Insertar descripción de la imagen aquí

Ejemplo de práctica
Convertir cadena a valor de FECHA


-- 2023-09-20
SELECT STR_TO_DATE('20,9,2023','%d,%m,%Y');
-- 2023-09-20
SELECT STR_TO_DATE('2023-09-20 11:30:00','%Y-%m-%d');
-- 2023-08-01
SELECT STR_TO_DATE('August,1,2023', '%M,%e,%Y');
-- 2023-08-10
SELECT STR_TO_DATE('August 10 2023', '%M %d %Y');
-- 2023-08-15
SELECT STR_TO_DATE('Monday, August 15, 2023', '%W,%M %e, %Y');

将字符串转换为DATETIME-- 2023-09-20 11:30:00
SELECT STR_TO_DATE('20230920 1130','%Y%m%d %h%i');
-- 2023-09-20 11:30:00
SELECT STR_TO_DATE('2023-09-20 11:30:00','%Y-%m-%d %H:%i:%s');
-- 2023-09-20 10:40:10
SELECT STR_TO_DATE('2023,9,20 10,40,10', '%Y,%m,%d %h,%i,%s');
STR_TO_DATE函数在根据格式字符串format解析输入字符串str时,忽略输入字符串str末尾的额外字符

-- 2023-09-20
SELECT STR_TO_DATE('20,9,2023 extra characters','%d,%m,%Y'); 
-- 2023-09-20 11:30:00
SELECT STR_TO_DATE('20230920 1130 extra characters','%Y%m%d %h%i');
如果输入字符串str是非法的,则STR_TO_DATE函数返回NULL

-- NULL
SELECT STR_TO_DATE('2023','%Y');
-- NULL
SELECT STR_TO_DATE('11','%h');
-- NULL
SELECT STR_TO_DATE('1130','%h%i');
-- NULL
SELECT STR_TO_DATE('113005','%h%i%s');
-- NULL
SELECT STR_TO_DATE('August,20,2023', '%M %e %Y');
-- NULL
SELECT STR_TO_DATE('Monday, August 20, 2023', '%W %M %e %Y');

-- 用日期与字符串转换,计算当月第一天、下月第一天
select curdate() as '当前日期', 
DATE_FORMAT(curdate(), '%Y-%m') as '当前月份', 
str_to_date(concat(DATE_FORMAT(curdate(), '%Y-%m'), '-01'), '%Y-%m-%d') as '当前月的第一天', 
date_add(str_to_date(concat(DATE_FORMAT(curdate(), '%Y-%m'), '-01'), '%Y-%m-%d'), interval 1 month) as '下月的第一天';
 
-- 当前月的最后一天
select last_day(curdate());
 
-- 下月第一天
select date_add(last_day(curdate()), interval 1 day);
 
-- 当天为当月的第几天
select day(curdate());
 
-- 当月第一天
select date_add(curdate(), interval 1-(day(curdate())) day);

Supongo que te gusta

Origin blog.csdn.net/weixin_45817985/article/details/133089189
Recomendado
Clasificación