Вы находитесь на странице: 1из 24

SQL Server 2008 Bootcamp Da 2

SQL Server 2008 Nuevos tipos de datos de fecha y hora

Informacin sobre versin Beta


Tanto la informacin como los ejemplos son relativos a la beta pblica de SQL Server 2008 CTP5 Tanto comandos como funcionalidades pueden diferir de la versin RTM final

2007 Solid Quality Mentors

Tipos Date y Time


Escenarios y requerimientos

Separacin de tipos de fecha y hora Mayor precisin de fracciones de segundo Mayor rango de datos Conocimiento de zona horaria Consecuente y/o equivalente al SQL Estndar Migracin de Base de Datos
Compatibilidad con soluciones de la competencia

Tipos Date y Time


Tipo de datos Date

DATE
Solo fechas Gran rango desde 0001-01-01 al 9999-12-31 Tipo estndar de SQL Tamao fijo de almacenamiento de 3 bytes

Tipos Date y Time


Soporte de DATE para cadenas y formatos literales

Numeric
mm/dd/yyyy, dd-mm-yyyy, mm.dd.yyyy

Alphabetical
mon dd, yyyy

ISO 8601
yyyy-mm-dd, yyyymmdd

ODBC
{yyyy-mm-dd}

W3C XML
yyyy-mm-ddZ

Tipos Date y Time


Tipo de datos TIME

TIME(n)
Solo tiempo Precisin opcional asignable por el usuario
Hasta 100 nanosegundos (por defecto) Por defecto alineado con el SO y .NET

Formato
HH:MI:SS[.nnnnnnn] Se soportan otros

Tipo de datos SQL Estndar Almacenamiento variable de 3 a 5 bytes

Tipos Date y Time


Tipo de datos con zona horaria

DATETIMEOFFSET(n)
Contiene fecha, hora y offset para zona horaria Gran rango de datos desde 0001-01-01 a 9999-12-31 Precisin opcionalmente especificable por el usuario
Hasta 100 nanosegundos (por defecto) Por defecto alineado con el SO y .NET

Formato
YYYY-MM-DD HH:MI:SS.[.nnnnnnn][+|-]HH:MI fsets de zona horaria con rangos desde -14:00 a 14:00

Tipo equivalente a SQL Estndar


TIMESTAMP WITH TIME ZONE

Tamao de almacenamiento variable de 8 a 10 bytes

Tipos Date y Time


Interioridades de DATETIMEOFFSET

Los datos son almacenados como valores UTC Se realiza procesamiento como valores UTC
comparaciones ordenacin indexacin

Se puede devolver la zona horaria original

Tipos Date y Time


Nuevos tipos date/time mejorados

DATETIME2(n)
Gran rango de datos desde 0001-01-01 a 9999-12-31 Precisin opcionalmente especificable por el usuario
Hasta 100 nanosegundos (por defecto) Por defecto alineado con el SO y .NET

Equivalente al Estndar SQL (TIMESTAMP) Tamao de almacenamiento variable de 6 a 8 bytes No soporta zona horaria Alineado con el tipo nativo de .NET DateTime Reemplazo recomendado de los actuales DateTime y smalldatetime

Tipos Date y Time


Nuevos tipos date/time mejorados

datetime2 soporta los formatos ISO 8601 completamente


yyyy-mm-dd yyyymmdd

Los antiguos DateTime *todava* no gestionan yyyy-mm-dd como un formato ISO


Ten cuidado! Realizado para evitar cambios de comportamiento inesperados

2007 Solid Quality Mentors

10

Tipos Date y Time


Fracciones de segundo

Por defecto: 100 nanosegundos


10-millonsima de segundo Alineado con Windows y con DateTime de .NET

Parmetros de tipo opcional


Numero de dgitos para la parte fraccional de segundo Puede ser un entero de 0 a 7 (100 nanosegundos)
Tipo de columna DATE TIME DATETIMEOFFSET DATETIME2 DATETIME2(0) Formato de cadena literal por defecto YYYY-MM-DD HH:MI:SS [.nnnnnnn] YYYY-MM-DD HH:MI:SS[.nnnnnnn][+|-]HH:MI YYYY-MM-DD HH:MI:SS[.nnnnnnn] YYYY-MM-DD HH:MI:SS Precision 10 16 34 27 19 Escala 0 7 7 7 0

Tipos Date y Time


Integracin en servidor

Tipo de datos nativo, completamente integrado


Compatible con todas las funciones (built-in) Todas las funcionalidades

Nuevas partes de fecha aadidas


DATEADD, DATEDIFF, DATEPART, DATENAME microsegundos (mcs) nanosegundos (ns) TZoffset (tz) Nmero de semana ISO 8601

Tipos Date y Time


Nuevas funciones built-in

Valores del sistema


SYSDATETIME(), SYSUTCDATETIME() SYSDATETIMEOFFSET()
Consciencia del horario de verano segn el SO

Manipulacin del offset de zona horaria


TODATETIMEOFFSET() SWITCHOFFSET()

Tipos Date y Time


Soporte a bajo nivel en aplicaciones cliente

Los metadatos son nvarchar o varchar Los datos son una cadena de caracteres literal en formato SQL/ISO
Tipo de columna DATE TIME DATETIMEOFFSET DATETIME2 Formato por defecto de cadena literal YYYY-MM-DD HH:MI:SS [.nnnnnnn] YYYY-MM-DD HH:MI:SS[.nnnnnnn][+|-]HH:MI YYYY-MM-DD HH:MI:SS[.nnnnnnn]

Tipos Date y Time


Funcionalidades avanzadas del servidor

Soporte completo para xs:dateTime


Soporte para valores sin zona horaria Se puede preservaar el offset de zona horaria

Soporte para .NET nullable<T> en todos los tipos nativos


Ya no hacen falta SqlTypes Modelo de programacin consistente con el CLR

Tipos Date y Time


Casos de uso tpicos en T-SQL(1)

Obtener el offset temporal del sistema


SELECT DATENAME(tz, SYSDATETIMEOFFSET()) AS TZ; TZ -----------------------------+02:00

Creacin de un tipo de datos atmico: birthday


CREATE TYPE birthday FROM DATE NOT NULL; GO CREATE TABLE Contact ( ContactID , ContactName , ContactBirthday );

int varchar(100) birthday

NOT NULL PRIMARY KEY NOT NULL NOT NULL

Tipos Date y Time


Casos de uso tpicos en T-SQL(2)

DATEFORMAT() no afecta a los literales ISO


CREATE TABLE T1 (f1 datetime NOT NULL PRIMARY KEY) CREATE TABLE T2 (f1 datetime2 NOT NULL PRIMARY KEY) SET DATEFORMAT ydm INSERT T1 VALUES ('2007-08-13') INSERT T2 VALUES ('2007-08-13')

-- esto falla!

Obtener la fecha y hora actuales del sistema


SELECT SYSDATETIME(), SYSDATETIMEOFFSET(), SYSUTCDATETIME() DT Function ------------------SYSDATETIME() SYSDATETIMEOFFSET() SYSUTCDATETIME() Result ---------------------------------2007-10-05 00:23:24.1904448 +00:00 2007-10-05 00:23:24.1904448 +02:00 2007-10-04 22:23:24.1904448 +00:00

Tipos Date y Time


Casos de uso tpicos en T-SQL(3)

Obtener fecha/hora local o UTC datetimeoffset


SELECT , TZ ------Local UTC CONVERT(datetime2, SYSDATETIMEOFFSET(), 0) CONVERT(datetime2, SYSDATETIMEOFFSET(), 1); Result --------------------------2007-10-05 00:57:27.7188944 2007-10-04 22:57:27.7188944

Obtener fecha/hora local de una zona horaria distinta


SELECT , SYSDATETIME(), SYSDATETIMEOFFSET() CONVERT(datetime2 , SWITCHOFFSET(SYSDATETIMEOFFSET(), '+01:00')); Result ---------------------------------2007-10-05 01:20:38.6990256 +00:00 2007-10-05 01:20:38.6990256 +02:00 2007-10-05 00:20:38.6990256 +00:00

DT Function ------------------SYSDATETIME() SYSDATETIMEOFFSET() SWITCHOFFSET(...)

Tipos Date y Time


Casos de uso tpicos T-SQL(4)

Utilizando CAST/CONVERT con index seek


CREATE TABLE dbo.Search (MyDate datetime2 NOT NULL PRIMARY KEY); SELECT FROM WHERE SELECT FROM WHERE SELECT FROM WHERE MyDate dbo.Search MyDate = '09:00:00'; MyDate dbo.Search CONVERT(time(0), MyDate) = '09:00:00'; MyDate dbo.Search CONVERT(date, MyDate) = '2007-01-01';

Tipos Date y Time


Soporte en proveedores cliente

Completo soporte SNAC (ODBC/OLEDB) en Katmai Completo soporte SqlClient/ADO.NET en Orcas


SQL DATE
TIME DATETIMEOFFSET DATETIME2

ODBC SQL_TYPE_DATE, SQL_DATE


SQL_TIME, SQL_SS_TIME2 SQL_SS_TIMESTAMPO FFSET

OLEDB DBTYPE_DBDATE
DBTYPE_DBTIME, DBTYPE_DBTIME2 DBTYPE_DBTIMESTAMP OFFSET

ADO.NET DateTime
TimeSpan DateTimeOffset DateTime

SQL_TYPE_TIMESTAMP DBTYPE_DBTIMESTAMP , SQL_TIMESTAMP

Tipos Date y Time


Books online

Nuevos tpicos especficos en CTP4 y posteriores


Tipos de datos fecha, hora, y funciones (T-SQL) Usando datos fecha y hora Mapeo de tipos de datos temporales con consultas distribuidas Utilizando XML con los nuevos tipos de datos de fecha y hora

DEMO 1

Fecha y hora
2007 Solid Quality Mentors

22

Tipos de datos Fecha y Hora

Preguntas y Respuestas

Links de SQL Server 2008


Site de SQL Server 2008
http://www.microsoft.com/sql/2008/

Ejemplos SQL Server 2008


http://www.codeplex.com/SqlServerSamples

2007 Solid Quality Mentors

24

Вам также может понравиться