Procesamiento y conversión de cadenas de fecha y hora de SQL Server

En SQL Server, puede usar funciones T-SQL para la manipulación y conversión de cadenas de fecha y hora. Para determinar si una cadena de fecha contiene información de hora, puede usar las funciones integradas CONVERT y TRY_CONVERT de T-SQL y especificar el formato de hora.

Por ejemplo, suponga que hay una cadena de fecha llamada cadena_fecha, puede usar el siguiente código para determinar si contiene información de tiempo:

SELECT TRY_CONVERT(datetime, date_string) AS result

Si date_string contiene información de tiempo, se devolverá un valor de fecha y hora válido; de lo contrario, se devolverá NULL.

Además, si conoce el formato de hora de la cadena de fecha, también puede especificar el formato de hora explícitamente en la función CONVERTIR, así:

SELECT CONVERT(datetime, date_string, 120) AS result

Entre ellos, 120 indica que el formato de hora es aaaa-mm-dd hh:mi:ss (es decir, el formato estándar de fecha y hora con horas, minutos y segundos). Si date_string contiene información de hora, se devolverá un valor de fecha y hora válido; de lo contrario, se devolverá "1900-01-01 00:00:00.000".
Además de usar las funciones CONVERT y TRY_CONVERT, también puede usar la función ISDATE para determinar si una cadena tiene un formato de fecha y hora legal.

La función ISDATE devolverá 1 para indicar que la cadena tiene un formato de fecha y hora legal, devolverá 0 para indicar que la cadena no tiene un formato de fecha y hora legal y devolverá NULL para indicar que el valor de entrada es NULL. Por ejemplo:

SELECT ISDATE('2023-04-28 12:34:56') as result -- 返回1
SELECT ISDATE('2023/04/28') as result -- 返回1
SELECT ISDATE('2023-04-28T12:34:56Z') as result -- 返回0

En el ejemplo anterior, la primera consulta devolvería 1 porque la cadena '2023-04-28 12:34:56' es un valor de fecha y hora legal. La segunda consulta también devolverá 1 porque la cadena '2023/04/28' también se puede analizar como una fecha. La tercera consulta devolverá 0 porque la cadena contiene caracteres ilegales como T y Z.

Cabe señalar que la función ISDATE también puede devolver resultados inexactos para cadenas de fecha y hora en ciertos formatos, como los formatos de fecha y hora ISO 8601 con información de zona horaria (como '2022-12-31T23:59:59+08 : 00'). Por lo tanto, al usar la función ISDATE para juzgar las cadenas de fecha y hora, se recomienda comprender el tipo de datos y el formato con los que está tratando y realizar las pruebas y verificaciones adecuadas.

Además, si necesita convertir una cadena de fecha y hora en un tipo de fecha y hora específico, también puede usar las funciones CAST o CONVERT. Por ejemplo:

-- 将日期时间字符串转换为datetime类型
SELECT CAST('2023-04-28 12:34:56' AS datetime) AS result

-- 将日期时间字符串转换为date类型
SELECT CONVERT(date, '2023-04-28') AS result

-- 将日期时间字符串转换为time类型
SELECT CONVERT(time, '12:34:56') AS result

En el ejemplo anterior, la primera consulta devolverá un valor de tipo fecha y hora que representa el valor de fecha y hora "2023-04-28 12:34:56"; la segunda consulta devolverá un valor de tipo fecha que representa "2023-04-28" ; la tercera consulta devolverá un valor de tipo tiempo, que representa el valor de tiempo de "12:34:56".

Cabe señalar que cuando se usa la función CAST o CONVERT para la conversión de tipos, si el formato de la cadena de entrada es incorrecto, se generará una excepción. Por lo tanto, se recomienda usar funciones como TRY_CONVERT o ISDATE para juzgar si la cadena está en un formato de fecha y hora legal para evitar situaciones anormales.
Además, si necesita generar valores de fecha y hora formateados, puede usar la función CONVERTIR y especificar el formato de conversión para obtener el resultado de salida deseado. Por ejemplo:

-- 将datetime类型转换为字符串类型,输出yyyy-mm-dd格式
SELECT CONVERT(varchar(10), GETDATE(), 120) AS result

-- 将datetime类型转换为字符串类型,输出yyyy年mm月dd日 hh时mi分ss秒格式
SELECT CONVERT(varchar(30), GETDATE(), 121) AS result

-- 将time类型转换为字符串类型,输出hh:mm:ss格式
SELECT CONVERT(varchar(8), CAST('12:34:56' AS time), 108) AS result

En el ejemplo anterior, la primera consulta devolverá la representación de cadena de la fecha actual en el formato "yyyy-mm-dd" (por ejemplo: "2023-04-28"); la segunda consulta devolverá la representación de cadena de la fecha y hora actual, el formato es "aaaa año mm mes dd día hh hora mi ss segundo" (por ejemplo: "28 de abril de 2023 13:24:06"); la tercera consulta devolverá una cadena de tiempo, indica el valor de tiempo "12:34 :56".

Debe tenerse en cuenta que cuando se usa la función CONVERTIR para la conversión de tipos y la salida formateada, se pueden obtener diferentes resultados de salida especificando diferentes códigos de formato. Para obtener más información, consulte la documentación sobre las funciones CONVERT y CAST en la documentación de Microsoft SQL Server.
Además, si necesita sumar y restar valores de fecha y hora, puede usar las funciones integradas DATEADD y DATEDIFF de T-SQL. Estas dos funciones se utilizan para incrementar o disminuir un intervalo de tiempo específico en un valor de fecha y hora, y para calcular el intervalo de tiempo entre dos valores de fecha y hora, respectivamente.

Por ejemplo, dada una variable de fecha y hora llamada fecha, puede usar el siguiente código para incrementarla en 1 día y generar el resultado:

SET @date = DATEADD(day, 1, @date)
SELECT @date AS result

En el código anterior, el primer parámetro de la función DATEADD indica la unidad de intervalo de tiempo que se aumentará o disminuirá (el día indica el número de días), el segundo parámetro indica el tamaño del intervalo de tiempo que se aumentará o disminuirá (1 indica 1 día) , y el tercero El primer parámetro es el valor de fecha y hora (es decir, la variable @date) que debe operarse.

Además, si necesita calcular el intervalo de tiempo entre dos valores de fecha y hora, puede usar la función DATEDIFF. Por ejemplo, el siguiente código calculará la diferencia en segundos entre dos valores de fecha y hora:

DECLARE @start datetime = '2023-04-28 12:00:00'
DECLARE @end datetime = '2023-04-28 12:01:00'

SELECT DATEDIFF(second, @start, @end) AS result

En el código anterior, el primer parámetro de la función DATEDIFF indica la unidad de intervalo de tiempo que se calculará (el segundo indica la cantidad de segundos), y el segundo y tercer parámetro son la fecha de inicio y el valor de la hora y la fecha de finalización que se calculará respectivamente. valor.

Cabe señalar que al utilizar las funciones DATEADD y DATEDIFF para operaciones de fecha y hora, debe asegurarse de que los tipos y formatos de los parámetros de entrada sean correctos para evitar situaciones anormales. Además, las diferentes versiones de SQL Server pueden tener un soporte ligeramente diferente para las operaciones de fecha y hora, consulte y pruebe según la versión que esté utilizando.

Supongo que te gusta

Origin blog.csdn.net/baidu_38495508/article/details/130444319
Recomendado
Clasificación