Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Convertendo DateTime para o formato YYYY-MM-DD no SQL Server


Um banco de dados SQL Server pode armazenar diversos tipos de dados, como números, strings de texto, valores booleanos, datas, etc. No entanto, armazenar e manipular esses dados tem suas especificidades. O artigo atual se concentrará no armazenamento de datas em uma tabela de banco de dados do SQL Server e na conversão de diferentes tipos de datas no formato do SQL Server AAAA-MM-DD e vice-versa.

Vamos começar!

AAAA-MM-DD – o formato de data no SQL Server


O formato de dados AAAA-MM-DD do SQL Server sugere que o ano é marcado por quatro dígitos, por exemplo, 2021. O mês é especificado a seguir em 2 dígitos variando de 1 a 12 – por exemplo, junho seria 06. Por fim, o dia do mês é apresentado em 2 dígitos, como 20. Assim, a data 06 de junho de 2021 , será armazenado como 2021-06-21. É o formato AAAA-MM-DD para datas em bancos de dados SQL Server.

No SQL Server, você pode usar o tipo de dados Date ou DateTime para armazenar datas. A diferença entre os tipos de dados Date e DateTime está no nível de detalhe em que ambos os tipos de dados armazenam as informações de data.
  • O DateTime tipo de dados armazena a data juntos com o tempo informações em horas , minutos e segundos .
  • A Data tipo de dados só permite que você armazene a data informações sem as informações de tempo.

O exemplo a seguir demonstra a diferença entre os tipos de dados Date e DateTime.

Primeiro, estamos criando um MyDatabase fictício banco de dados e uma tabela (Paciente ) iniciar.

O Paciente A tabela tem 5 colunas:Id, Nome, Gênero, DOB (Data de Nascimento) e DOD (Data de Falecimento). O tipo da coluna DOB é Date, enquanto a coluna DOD tem o tipo de dados DateTime.
CREATE DATABASE MyDatabase

USE MyDatabase
CREATE TABLE Patient

(
Id INT PRIMARY KEY IDENTITY(1,1),
Name VARCHAR (50) NOT NULL,
Gender VARCHAR (50),
DOB Date,
DOD DateTime
)

O script a seguir insere alguns registros fictícios no Paciente tabela:
INSERT INTO Patient
VALUES ('Jack', 'Male', '1960-12-15', '2017-06-30 16:30:35'),
('Sara', 'Female', '1962-01-20', '2015-02-22 10:35:55'),
('Elisa', 'Female', '1959-03-25', '2020-03-16 22:24:39'),
('Nik', 'Male', '1938-12-15', '2011-06-21 09:45:55'),
('Jos', 'Male', '1940-09-12', '2015-03-25 11:55:20')

Observe a diferença entre os valores inseridos na coluna DOB e na coluna DOD. A coluna DOB tem valores no formato AAAA-MM-DD, mas para a coluna DOD você passa a informação HH:MM:SS (horas:minutos:segundos).

Vamos agora ver como nosso Paciente mesa parece. Execute o seguinte script SQL para selecionar todos os registros da tabela Paciente:
SELECT * FROM Patient

Como converter DateTime em formato de data YYYY-MM-DD no SQL Server


Muitas vezes, precisamos apenas da parte da data do DateTime coluna. Como os valores de data são armazenados no SQL Server no formato AAAA-MM-DD por padrão, extrair a parte da data do tipo de dados DateTime retorna a data neste formato .

Vejamos um exemplo. O DOD coluna na coluna Paciente A tabela armazena valores no DateTime formato. Vamos ver como extrair a Data parte da coluna:
SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient

Como você pode ver no script acima, para converter a coluna do tipo DateTime para Date , você pode usar o CAST função. Você precisa passar o nome da coluna seguido do AS declaração e a DATA digite para o CAST função.

Aqui está o resultado do seu script:os valores da coluna DOD são selecionados e convertidos no formato AAAA-MM-DD.

Vamos selecionar o DOD original valores de coluna e DOD convertido valores para demonstrar a diferença entre eles:
SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
FROM Patient

Por fim, se você deseja selecionar todas as colunas em sua tabela e converter apenas uma única coluna (por exemplo, converter a coluna DOD para o tipo Date), execute o seguinte script:
SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
from Patient t

Na saída, você pode ver todas as colunas da tabela junto com a coluna DOD_Date que contém a parte Date da coluna DOD.

Como converter string para formato de data do SQL Server AAAA-MM-DD


As datas geralmente são armazenadas em formatos de string nas colunas da tabela do SQL Server. Você pode converter os valores de string para o formato de data do SQL Server YYYY-MM-DD.

Vamos criar outra coluna em nosso Paciente tabela. O nome da coluna é Arriv_Date (coluna fictícia que mostra as datas de chegada dos pacientes) e o tipo de coluna é VARCHAR . Execute o seguinte script para criar esta coluna:
ALTER TABLE Patient
ADD Arriv_Date varchar(50);

Você recebe a nova Arriv_Date coluna adicionada ao Paciente coluna. No momento, a Data_de chegada coluna contém NULL valores.
SELECT * FROM Patient

Vamos agora adicionar alguns registros à Arriv_Date coluna. O script a seguir insere strings em vários formatos de data nesta coluna.
UPDATE Patient SET Arriv_Date = '10-Nov-2012' WHERE Id = 6
UPDATE Patient SET Arriv_Date = 'March 31, 2015' WHERE ID = 7
UPDATE Patient SET Arriv_Date = '12/02/2020' WHERE ID = 8
UPDATE Patient SET Arriv_Date = '10 October 2020' WHERE ID = 9
UPDATE Patient SET Arriv_Date = '15/10/21' WHERE ID = 10

Agora, vamos ver como os dados na Arriv_Date aparência da coluna. Execute o script abaixo:
SELECT * FROM Patient

Para converter todas as strings em Arriv_Date coluna para o formato de data do SQL Server AAAA-MM-DD , você pode usar novamente o CAST função. Você precisa especificar o nome da coluna seguido pelo AS declaração e a DATA tipo.

O script a seguir seleciona a Arriv_Date original coluna e os valores nela que são convertidos em formato de data.
Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
FROM Patient

A saída mostra valores em diferentes formatos de data. A coluna de tipo de string Arriv_Date é convertido para AAAA-MM-DD formato no ARRIVAL_DATE coluna:

Como converter o formato de data do SQL Server YYYY-MM-DD em outros formatos


Assim como você pode converter outros formatos para YYYY-MM-DD, você pode fazer o inverso. Para converter o AAAA-MM-DD formato de data para strings com diferentes formatos de data, você pode usar a função CONVERT.

A função CONVERT aceita três parâmetros:o tipo de destino que é VARCHAR(50) no script a seguir, a coluna de data original e o código. O código define como será a aparência da data convertida. Aqui, o valor do código de 105 converte a data no formato DD-MM-AAAA.

Execute o script para converter a data do formato AAAA-MM-DD para DD-MM-AAAA:
SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
From Patient

Aqui está a saída:

Vamos a outro exemplo. O valor do código de 106 para a data convertida converte a data do formato YYYY-MM-DD para o formato DD MON YYYY. Por exemplo, na primeira coluna, a data 1960-12-15 é convertida para 12 de dezembro de 1960.
SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
From Patient

Da mesma forma, o valor do código 6 converte uma data para o formato DD MON YY:
SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
From Patient

E, finalmente, o valor do código de 11 converte uma data para o formato AAAA/MM/DD:
SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
From Patient

Para ver mais detalhes de todos os vários formatos de data e códigos correspondentes, consulte a documentação oficial do SQL Server.

Conclusão


Dessa forma, esclarecemos tanto a essência do formato de data do SQL server YYYY-MM-DD quanto os casos específicos de conversão de datas para este formato e vice-versa.

Aprendemos a usar a função CAST para converter diferentes tipos de dados, incluindo DateTime e strings para o formato YYYY-MM-DD e a função CONVERT para transformar as datas YYYY-MM-DD em outros formatos.

Além disso, as ferramentas modernas para especialistas em SQL Server tornam o trabalho de edição das datas muito mais simples. Por exemplo, o dbForge Studio for SQL Server com vários recursos inclui, entre as outras opções, um prático Editor de Dados Visual que você pode usar ao trabalhar com datas no SQL Server.

Espero que esta informação tenha sido útil para você. Fique atento!