Processamento e conversão de strings de data e hora do SQL Server

No SQL Server, você pode usar funções T-SQL para manipulação e conversão de strings de data e hora. Para determinar se uma string de data contém informações de hora, você pode usar as funções integradas CONVERT e TRY_CONVERT do T-SQL e especificar o formato de hora.

Por exemplo, suponha que haja uma string de data chamada date_string, você pode usar o seguinte código para determinar se ela contém informações de hora:

SELECT TRY_CONVERT(datetime, date_string) AS result

Se date_string contiver informações de hora, um valor válido de data e hora será retornado; caso contrário, NULL será retornado.

Além disso, se você souber o formato de hora da string de data, também poderá especificar o formato de hora explicitamente na função CONVERT, da seguinte forma:

SELECT CONVERT(datetime, date_string, 120) AS result

Entre eles, 120 indica que o formato de hora é aaaa-mm-dd hh:mi:ss (ou seja, o formato padrão de data e hora com horas, minutos e segundos). Se date_string contiver informações de hora, um valor válido de data e hora será retornado; caso contrário, "1900-01-01 00:00:00.000" será retornado.
Além de usar as funções CONVERT e TRY_CONVERT, você também pode usar a função ISDATE para determinar se uma string está em um formato legal de data e hora.

A função ISDATE retornará 1 para indicar que a string é um formato legal de data e hora, retornará 0 para indicar que a string não é um formato legal de data e hora e retornará NULL para indicar que o valor de entrada é NULL. Por exemplo:

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

No exemplo acima, a primeira consulta retornaria 1 porque a string '2023-04-28 12:34:56' é um valor legal de data e hora. A segunda consulta também retornará 1 porque a string '2023/04/28' também pode ser analisada como uma data. A terceira consulta retornará 0 porque a string contém caracteres ilegais, como T e Z.

Deve-se observar que a função ISDATE também pode retornar resultados imprecisos para strings de data e hora em determinados formatos, como formatos de data e hora ISO 8601 com informações de fuso horário (como '2022-12-31T23:59:59+08 : 00'). Portanto, ao usar a função ISDATE para avaliar strings de data e hora, é recomendável entender o tipo e formato de dados com os quais você está lidando e realizar testes e verificações apropriados.

Além disso, se você precisar converter uma string de data e hora em um tipo específico de data e hora, também poderá usar as funções CAST ou CONVERT. Por exemplo:

-- 将日期时间字符串转换为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

No exemplo acima, a primeira consulta retornará um valor do tipo datetime representando o valor datetime "2023-04-28 12:34:56"; a segunda consulta retornará um valor do tipo date representando "2023-04-28" ; a terceira consulta retornará um valor do tipo hora, representando o valor de hora "12:34:56".

Deve-se observar que ao usar a função CAST ou CONVERT para conversão de tipo, se o formato da string de entrada estiver incorreto, uma exceção será lançada. Portanto, é recomendável usar funções como TRY_CONVERT ou ISDATE para julgar se a string está em um formato legal de data e hora para evitar situações anormais.
Além disso, se você precisar gerar valores de data e hora formatados, poderá usar a função CONVERT e especificar o formato de conversão para obter o resultado de saída desejado. Por exemplo:

-- 将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

No exemplo acima, a primeira consulta retornará a representação de string da data atual no formato "aaaa-mm-dd" (por exemplo: "2023-04-28"); a segunda consulta retornará a representação de string da data e hora atual, o formato é "aaaa ano mm mês dd dia hh hora mi ss segundo" (por exemplo: "28 de abril de 2023 13:24:06"); a terceira consulta retornará uma string de hora, indica o valor de hora "12:34 :56".

Deve-se observar que, ao usar a função CONVERT para conversão de tipo e saída formatada, diferentes resultados de saída podem ser obtidos especificando diferentes códigos de formato. Para obter detalhes, consulte a documentação sobre as funções CONVERT e CAST na documentação do Microsoft SQL Server.
Além disso, se você precisar adicionar e subtrair valores de data e hora, poderá usar as funções DATEADD e DATEDIFF integradas do T-SQL. Essas duas funções são usadas para aumentar ou diminuir um intervalo de tempo especificado em um valor de data e hora e para calcular o intervalo de tempo entre dois valores de data e hora, respectivamente.

Por exemplo, dada uma variável de data e hora chamada date, você pode usar o seguinte código para incrementá-la em 1 dia e gerar o resultado:

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

No código acima, o primeiro parâmetro da função DATEADD indica a unidade do intervalo de tempo a ser aumentado ou diminuído (dia indica o número de dias), o segundo parâmetro indica o tamanho do intervalo de tempo a ser aumentado ou diminuído (1 indica 1 dia) , e o terceiro O primeiro parâmetro é o valor de data e hora (ou seja, a variável @date) que precisa ser operado.

Além disso, se você precisar calcular o intervalo de tempo entre dois valores de data e hora, poderá usar a função DATEDIFF. Por exemplo, o código a seguir calculará a diferença em segundos entre dois valores de data e 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

No código acima, o primeiro parâmetro da função DATEDIFF indica a unidade do intervalo de tempo a ser calculado (segundo indica o número de segundos), e o segundo e o terceiro parâmetros são a data inicial e o valor da hora e a data final a ser calculada, respectivamente. valor.

Deve-se observar que, ao usar as funções DATEADD e DATEDIFF para operações de data e hora, você precisa garantir que os tipos e formatos de parâmetro de entrada estejam corretos para evitar situações anormais. Além disso, versões diferentes do SQL Server podem ter suporte ligeiramente diferente para operações de data e hora, consulte e teste de acordo com a versão que você está usando.

Acho que você gosta

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