SQL - Hablando sobre fechas II

 
Vista:

Hablando sobre fechas II

Publicado por Gonzalo Solano C. (148 intervenciones) el 22/10/2001 09:17:33
SELECT CONVERT (CHAR(20), GetDate ()) + 'Hola'
SELECT GetDate () + 'Hola'
Veran que la primera instrucción devuelve la fecha en un formato mas el string hola, al contrario la segunda instrucción no se ejecutara.
Como almacena entonces realmente SQL Server las fechas?? SQL Server según los libros en linea Microsoft SQL Server almacena internamente los valores de tipo de datos datetime como enteros de 4 bytes. Los 4 primeros bytes almacenan el número de días antes o después de la fecha base, el 1 de enero de 1900. La fecha base es la fecha de referencia del sistema. Los valores para datetime anteriores al 1 de enero de 1753 no se permiten. Los otros 4 bytes almacenan la hora del día representada como el número de milisegundos después de media noche, esto se puede ver en el siguiente ejemplo
DECLARE @hoy DATETIME, @bytehoy BINARY (8)
SELECT @hoy = '1900-02-01 00:00:1'
SELECT @bytehoy = CONVERT(BINARY (8), @hoy)
SELECT @hoy AS DiaCompleto, @bytehoy AS interno,
CONVERT (int, SUBSTRING(@bytehoy, 1, 4)) AS dias,
CONVERT (int, SUBSTRING(@bytehoy, 5, 8)) AS milisegundos

Veran que cada vez que incrementen 1 dia, dias incrementa en 1, y si adicionan 1 segundo milisegundos incrementa en 300, interesante verdad.
Bueno ahora que sabemos como nos devuelve la fecha y como esta es almacenada, veamos la otra parte como asignar la fecha.
SQL Server tiene una funcion muy interesante que es SET DATEFORMAT @formato
Asignando un determinado formato SQL Server puede interpretar de diferente forma la fecha asignada ejemplo
Para ello utilizaremos la siguiente fecha 12 de Febrero del 2001 o 12/2/2001 o formato DMY, que tal si ejecutamos las siguientes instrucci
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder