Como formatar a data e a hora no servidor SQL

Como formatar a data e a hora no servidor SQL
Manipular os valores de data e hora usando os tipos de dados de tempo, data e hora é uma das funcionalidades mais importantes do SQL, pois esses tipos de dados são projetados especificamente para armazenar esses valores. Eles são frequentemente utilizados em aplicativos que exigem o cálculo e a manipulação dos dados de data e hora. Neste artigo, nos aprofundaremos nesses tipos de dados.

Tipos de dados básicos de data em SQL

  • DATA: Este tipo de dados é usado para armazenar os valores da data no formato AAAA-MM-DD. É capaz de representar as datas dentro da faixa de 1º de janeiro de 0001 a 31 de dezembro de 9999. Os valores da data são armazenados em um formato compacto usando apenas três bytes.
  • TEMPO: O tipo de dados do tempo é utilizado para armazenar os valores de tempo no formato HH: MI: SS. É capaz de representar os valores de tempo dentro do intervalo de 00:00:00 a 23:59:59.
  • DATA HORA:. Ele permite os valores dentro da faixa de 1º de janeiro de 1753: 00:00:00 a 31 de dezembro de 9999, 23:59:59 para serem armazenados. Esse tipo de dados é útil para armazenar os registros de data e hora, como tempos de transação ou tempos de evento.
  • SmallDateTime: Este tipo de dados é o mesmo que o tipo de dados do dateTime, mas com alguma diferença menor. Ele armazena valores de data e hora, mas com uma gama menor de valores de 1 de janeiro de 1900: 00:00 a 6 de junho de 2079, 23:59:59. Os valores também são arredondados para o minuto mais próximo, o que economiza espaço e reduz o tempo de processamento. Esse tipo de dados é útil para armazenar uma informação sensível ao tempo que não requer alta precisão. São necessários apenas 4 bytes de dados. É armazenado no AAYYY-MM-DD HH: MM: Formato SS.
  • DateTime2: Este tipo de dados é semelhante ao tipo de dados do dateTime, mas com maior precisão e uma faixa maior. O intervalo de valores é o mesmo que o DateTime, mas pode armazenar os segundos fracionários de até 7 dígitos.

Como as datas são armazenadas no servidor SQL?

Dentro do servidor SQL, as datas são armazenadas usando dois números inteiros de 4 bytes. O número inteiro inicial corresponde ao número de dias anteriores ou sucedidos na data base de 1 de janeiro de 1900. O segundo número inteiro corresponde ao número de 1/300 de segundo que se passou desde meia -noite. Por exemplo, a data “1 de janeiro de 2000 12:00:00” é armazenada como os dois números inteiros - 36.529 (o número de dias entre 1 de janeiro de 1900 e 1 de janeiro de 2000) e 43.200.000 (o número de 1/300 de um segundo desde meia -noite).

O servidor SQL também fornece uma série de funções internas para trabalhar com datas, como DATADD, DATEDIFF e Convert, que nos permitem executar as operações comuns, como adicionar ou subtrair os intervalos de tempo, comparar as datas e formatar o datas.

Para executar as consultas SQL em um banco de dados, normalmente usamos uma ferramenta como o SQL Server Management Studio (SSMS).

Criando um [DBO].Tabela [Ordens]

Para criar uma tabela em nosso banco de dados, temos que escrever as seguintes consultas:

Criar tabela [DBO].[Ordens] (
[ord_number] não nulo
,[ORD_DATETIME] NULL DATETIME
,[ord_date] Data NULL
,[Deli_DateTime] NULL DATETIME
,[last_visit_date] Data NULL
)

Inserindo os dados no [DBO].Tabela [Ordens]

Insira os valores na tabela usando o seguinte comando:

Inserir em [DBO].[Ordens] ([ord_number], [ord_dateTime], [ord_date], [deli_dateTime], [last_visit_date]))
Valores
('1', '2021-10-01 10:30:00', '2021-10-01', '2021-10-12 10:11:10', '2021-11-01'),
('2', '2021-10-01 12:45:00', '2021-10-01', '2021-10-10 14:10:11', '2021-10-15'),
('3', '2021-10-30 13:25:00', '2021-10-30', '2021-11-05 13:22:12', '2021-12-30'),
('4', '2021-09-22 16:30:00', '2021-09-22', '2021-09-25 14:12:13', '2021-12-22'),
('5', '2021-01-10 18:15:00', '2021-01-10', '2021-02-01 11:15:14', '2022-01-10'),
"

Convertendo uma data para string

Se trazer de volta os valores do dateTime da tabela, os resultados serão exibidos como “2021-10-01 10:30:00.000 ”. Mas se gostarmos de convertê -lo em uma string em nosso próprio formato no código SQL, podemos fazer isso usando a seguinte função:

Selecione
[ord_dateTime]
,Convert (Varchar (20), [ord_dateTime], 22) 'Order_date_string'
DE
[DBO].[Ordens]

Saída:

ord_dateTime order_date_string
2021-10-01 10:30:00.000 10/01/21 10:30:00
2021-10-01 12:45:00.000 10/01/21 12:45:00
2021-10-30 13:25:00.000 30/12/21 13:25:00

Encontrando uma data específica usando a cláusula onde

Para encontrar as ordens em que a data do pedido é 1º de dezembro de 2021, temos que seguir a seguinte consulta:

Selecione
[ord_number]
,[ord_date]
DE
[DBO].[Ordens]
ONDE
[ord_date] = '01/10/2021 '

Saída:

ord_number ord_date
5 2021-01-10
5 2021-01-10

Separando a data da hora

Também podemos usar a função de convertido em uma data para recuperar apenas o valor da data, especificando um estilo. Para isso, usamos a seguinte consulta:

Declare @DD como DateTime
Set @dd = '2011-07-03 20:30:40'
Selecione Convert (Varchar, @DD, 103)

Saída:

(Sem nome da coluna)
1 03/07/2011

Obtendo a data e hora atuais

Aqui está um exemplo de uma consulta SQL que recupera a data e a hora atuais usando as funções getDate e current_timestamp:

Selecione
GetDate ()
,Current_timestamp

Saída:

(Nenhum nome de coluna) (sem nome da coluna)
1 2023-03-04 23:44:02.883 2023-03-04 23:44:02.883

Encontrando a diferença entre duas datas

Muitas vezes é útil encontrar a diferença entre duas datas. Com isso, podemos fazer coisas como encontrar o número de dias entre o pedido e uma data de entrega.

Aqui está um exemplo:

Selecione
[ord_date]
,[Deli_DateTime]
,Datediff (dia, [ord_date], [deli_dateTime]) 'del_days'
DE
[DBO].[Ordens]

Saída:

ord_date deli_datetime del_days
1 2021-10-01 2021-10-12 10:11:10.000 11
2 2021-10-01 2021-10-10 14:10:11.000 9
3 2021-10-30 2021-11-05 13:22:12.000 6

Conclusão

Aprendemos a manipular as datas, horários e strings usando as funções internas. Essas funções são muito úteis para executar cálculos e transformações nos dados armazenados nas tabelas do SQL Server. Ao entender e usar esses tipos e funções de dados de maneira eficaz, podemos escrever consultas SQL mais eficientes e poderosas.