sql >> Base de Datos >  >> RDS >> Sqlserver

Convertir DateTime al formato AAAA-MM-DD en SQL Server

Una base de datos de SQL Server puede almacenar una variedad de tipos de datos, como números, cadenas de texto, valores booleanos, fechas, etc. Sin embargo, almacenar y manejar dichos datos tiene sus especificidades. El artículo actual se centrará en almacenar fechas en una tabla de base de datos de SQL Server y convertir diferentes tipos de fechas al formato de SQL Server AAAA-MM-DD y viceversa.

¡Comencemos!

YYYY-MM-DD:el formato de fecha en SQL Server

El formato de datos de SQL Server AAAA-MM-DD sugiere que el año está marcado por cuatro dígitos, por ejemplo, 2021. El mes se especifica a continuación en 2 dígitos que van del 1 al 12; por ejemplo, junio sería 06. Finalmente, el día del mes se presenta en 2 dígitos, como 20. Así, la fecha 06 de junio de 2021 , se almacenará como 2021-06-21. Es el formato AAAA-MM-DD para las fechas en las bases de datos de SQL Server.

En SQL Server, puede usar el tipo de datos Date o DateTime para almacenar fechas. La diferencia entre los tipos de datos Date y DateTime radica en el nivel de detalle en el que ambos tipos de datos almacenan la información de la fecha.

  • La fecha y hora el tipo de datos almacena la fecha juntos con el tiempo información en horas , minutos y segundos .
  • La Fecha tipo de datos solo le permite almacenar la fecha información sin la información de tiempo.

El siguiente ejemplo demuestra la diferencia entre los tipos de datos Date y DateTime.

Primero, estamos creando un ficticio MyDatabase base de datos y una tabla (Patient ) en él.

El Paciente La tabla tiene 5 columnas:Id, Nombre, Sexo, DOB (Fecha de nacimiento) y DOD (Fecha de muerte). El tipo de la columna DOB es Fecha, mientras que la columna DOD tiene el tipo de datos 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
)

El siguiente script inserta algunos registros ficticios en el Paciente tabla:

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 la diferencia entre los valores insertados en la columna DOB y la columna DOD. La columna DOB tiene valores en formato AAAA-MM-DD, pero para la columna DOD, pasa la información HH:MM:SS (horas:minutos:segundos).

Veamos ahora cómo nuestro Paciente aspecto de la mesa. Ejecute el siguiente script SQL para seleccionar todos los registros de la tabla Paciente:

SELECT * FROM Patient

Cómo convertir fecha y hora al formato de fecha AAAA-MM-DD en SQL Server

A menudo, solo necesitamos la parte de la fecha de DateTime columna. Dado que los valores de fecha se almacenan en SQL Server en formato AAAA-MM-DD de forma predeterminada, extraer la parte de la fecha del tipo de datos DateTime devuelve la fecha en este formato .

Echemos un vistazo a un ejemplo. El DOD columna en Paciente la tabla almacena valores en DateTime formato. Veamos cómo extraer la Fecha parte de la columna:

SELECT CAST(DOD AS DATE) AS DOD_Date
FROM Patient

Como puede ver en el script anterior, para convertir la columna de tipo DateTime a Date , puedes usar el CAST función. Debe pasar el nombre de la columna seguido del AS declaración y la FECHA escriba al CAST función.

Este es el resultado de su secuencia de comandos:los valores de la columna DOD se seleccionan y se convierten al formato AAAA-MM-DD.

Seleccionemos tanto el DOD original valores de columna y DOD convertidos valores para demostrar la diferencia entre ellos:

SELECT DOD as DOD, CAST(DOD AS DATE) AS DOD_Date
FROM Patient

Finalmente, si desea seleccionar todas las columnas de su tabla y convertir solo una columna (p. ej., convertir la columna DOD al tipo Fecha), puede ejecutar el siguiente script:

SELECT t.*, CAST(DOD AS DATE) AS DOD_Date
from Patient t

En el resultado, puede ver todas las columnas de la tabla junto con la columna DOD_Date que contiene la parte Fecha de la columna DOD.

Cómo convertir una cadena al formato de fecha de SQL Server AAAA-MM-DD

Las fechas a menudo se almacenan en formatos de cadena en las columnas de la tabla de SQL Server. Puede convertir los valores de cadena al formato de fecha de SQL Server AAAA-MM-DD.

Vamos a crear otra columna en nuestro Paciente mesa. El nombre de la columna es Arriv_Date (columna ficticia que muestra las fechas de llegada de los pacientes) y el tipo de columna es VARCHAR . Ejecute el siguiente script para crear esta columna:

ALTER TABLE Patient
ADD Arriv_Date varchar(50);

Recibe la nueva Arriv_Date columna agregada al Paciente columna. Por el momento, la Arriv_Date la columna contiene NULL valores.

SELECT * FROM Patient

Ahora agreguemos algunos registros en Arriv_Date columna. El siguiente script inserta cadenas en varios formatos de fecha en esta columna.

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

Ahora, veamos cómo los datos en Arriv_Date aspecto de la columna. Ejecute el siguiente script:

SELECT * FROM Patient

Para convertir todas las cadenas en Arriv_Date columna al formato de fecha de SQL Server YYYY-MM-DD , puedes volver a usar el CAST función. Debe especificar el nombre de la columna seguido del AS declaración y la FECHA tipo.

El siguiente script selecciona la Date_Arriv_Date original columna y los valores en ella que se convierten en formato de fecha.

Select Arriv_Date, CAST(Arriv_Date as DATE) as ARRIVAL_DATE
FROM Patient

La salida muestra valores en diferentes formatos de fecha. La columna de tipo de cadena Arriv_Date se convierte al YYYY-MM-DD formato en el ARRIVAL_DATE columna:

Cómo convertir el formato de fecha de SQL Server AAAA-MM-DD en otros formatos

Así como puede convertir otros formatos a YYYY-MM-DD, puede hacer lo contrario. Para convertir el YYYY-MM-DD formato de fecha a cadenas con diferentes formatos de fecha, puede usar la función CONVERTIR.

La función CONVERTIR acepta tres parámetros:el tipo de destino que es VARCHAR(50) en el siguiente script, la columna de fecha original y el código. El código define cómo se verá la fecha convertida. Aquí, el valor de código de 105 convierte la fecha al formato DD-MM-AAAA.

Ejecute el script para convertir la fecha del formato AAAA-MM-DD a DD-MM-AAAA:

SELECT DOB, CONVERT(varchar(50), DOB ,105) as DOB_CONV
From Patient

Aquí está la salida:

Tengamos otro ejemplo. El valor de código de 106 para la fecha convertida convierte la fecha del formato AAAA-MM-DD al formato DD MON AAAA. Por ejemplo, en la primera columna, la fecha 1960-12-15 se convierte al 12 de diciembre de 1960.

SELECT DOB, CONVERT(varchar(50), DOB ,106) as DOB_CONV
From Patient

De manera similar, el valor de código de 6 convierte una fecha al formato DD MON YY:

SELECT DOB, CONVERT(varchar(50), DOB ,6) as DOB_CONV
From Patient

Y finalmente, el valor de código de 11 convierte una fecha al formato AAAA/MM/DD:

SELECT DOB, CONVERT(varchar(50), DOB ,111) as DOB_CONV
From Patient

Para ver más detalles de todos los diversos formatos de fecha y códigos correspondientes, consulte la documentación oficial de SQL Server.

Conclusión

De esta forma, hemos aclarado tanto la esencia del formato de fecha del servidor SQL AAAA-MM-DD como los casos específicos de conversión de fechas a este formato y viceversa.

Aprendimos a usar la función CAST para convertir diferentes tipos de datos, incluidos DateTime y cadenas al formato AAAA-MM-DD y la función CONVERT para convertir las fechas AAAA-MM-DD a otros formatos.

Además, las modernas herramientas para los especialistas de SQL Server hacen que el trabajo de edición de fechas sea mucho más sencillo. Por ejemplo, el dbForge Studio para SQL Server con funciones múltiples incluye, entre el resto de opciones, un práctico editor de datos visuales que puede usar cuando trabaja con fechas en SQL Server.

Espero que esta información haya sido útil para usted. ¡Manténganse al tanto!