Nuevos tipos de datos en SQL Server 2008 (DateTime) 1a. Parte

 
La nueva versión de SQL Server 2008 que será liberada por ahí del mes de Febrero promete grandes y nuevas funcionalidades. En este artículo nos enfocaremos a un nuevo tipo de datos DateTime.

Estos nuevos tipos de datos permiten una mejora en el almacenamiento y en el trabajo con tipos de datos fecha y hora, incluyendo múltiples zonas horarias y cálculos mejorados.

Estos nuevos tipos de datos consisten en:

  • datetime2
  • date
  • time
  • datetimeoffset

Pero veamos como podemos trabajar con estas nuevas funcionalidades. Para esto deben de bajar el CTP de Noviembre de SQL Server 2008 desde: http://msdn2.microsoft.com/es-mx/bb851668.aspx

Primero vamos a abrir el SQL Server Management Studio desde el grupo de programas Microsoft SQL Server code name Katmai. Bueno vamos a crear una base de datos con el siguiente comando:

CREATE DATABASE LABDB

Después vamos a ejecutar la siguiente sentencia:

select * from sys.systypes

Y nos mostrará el siguiente resultado: 

Vemos que tenemos nuevos tipos de datos: datetime2, datimeoffset, date y time. Ahora vemos como funcionan estos tipos de datos, en el Query vamos a ejecutar la siguiente sentencia para crear una tabla con estos nuevos tipos de datos:

USE LABDB
GO
CREATE TABLE TBL_NewDatetimetypes (DateValue date, Timevalue Time, DateTimeOffset datetimeoffset, Datetime2value datetime2)

Y ahora vamos a introducir datos a nuestra tabla:

INSERT INTO TBL_NewDatetimetypes values (SYSDATETIME(),SYSDATETIME(),SYSDATETIMEOFFSET(),SYSUTCDATETIME())

Ahora veamos para que sirven las funciones que agregamos a la sentencia INSERT para crear un nuevo registro:

SYSDATETIME - Regresa la fecha y hora de la base de datos actual como un tipo datetime2(7). La zona horaria no es incluida. Este valor se deriva desde el sistema operativo en donde se esta ejecutando la instancia de SQL Server.

SYSDATETIMEOFFSET - Regresa la hora y fecha de la base de datos actual como un tipo datetimeoffset(7). Este valor es derivado del sistema operativo donde se esta ejecutando la instancia de SQL Server. SYSDATETIME y SYSUTCDATETIME tiene más fracciones de segundos para la precisión que GETDATE y GETUTCDATE.  SYSDATETIMEOFFSET incluye la zona horaria del sistema. SYSDATETIME, SYSUTCDATETIME y SYSDATETIMEOFFSET pueden ser asignadas a una variable de tipo date y time

SYSUTCDATETIME - Regresa la hora y fecha actual de la base de datos. La zona horaria no es incluida como valor. Este valor representa la hora UTC actual (por sus siglas en inglés Coordinated Universal Time). Este valor se deriva del sistema operativo donde se esta ejecutando la instancia de SQL Server.

Ahora ejecutemos una sentencia SELECT para ver los valores agregados a la tabla:

SELECT * FROM TBL_Datetimetypes

Veamos cual es el tamaño de almacenamiento de estos nuevos tipos de datos:

 

Ahora vamos a crear una nueva tabla y a insertar nuevos registros, para esto vamos a ejecutar la siguiente sentencia:

Create table tbl_timezones (Entryid int identity(1,1), Currenttime datetimeoffset)
insert into tbl_timezones (currenttime)
values ('1998-09-20 7:45:50.71345 -5:00')
insert into tbl_timezones (currenttime)
values ('1956-01-27 6:45:50.00000 -3:00')
insert into tbl_timezones (currenttime)
values ('1972-12-18 7:45:50.71345 +1:00')
insert into tbl_timezones (currenttime)
values ('2005-01-20 7:12:50.71345 +9:00')
insert into tbl_timezones (currenttime)
values ('2005-01-20 01:00:00.00000 +4:00')

Ahora vamos a ejecutar la función DATEPART para regresar la zona horaria. Esta función fue extendida para regresar el valor de la zona horaria, el valor TZoffset regresa el número en minutos que representa la hora estándar GMT. Por ejemplo (GMT -7) regresará un valor de -420

select datepart(TZoffset,sysdatetimeoffset())

Ahora ejecutemos la función SWITCHOFFSET para regresar la fecha en una zona horaria diferente:

select currenttime, SWITCHOFFSET(currenttime, datepart(TZoffset,sysdatetimeoffset())) as TimeinCurrentTimezone from tbl_timezones

Este sería el resultado:

Como verán tenemos muchas nuevas mejoras con este nuevo tipo de datos. En la próxima entrega les hablaré del trabajo con tipos de datos DATE / TIME.

Y como siempre los invito a participar en la comunidad y esperen noticias sobre el lanzamiento de Visual Studio 2008, SQL Server 2008 y Windows Server 2008 que DevelopersDotNet.com está preparando para todos ustedes.

Saludos y Feliz Codificación!
Víctor Alameda
Microsoft Certified Solution Developer

Published Sunday, January 27, 2008 8:46 PM por VAlameda
Ofrecido por Community Server (Non-Commercial Edition)