Fechas en SQL 2008

02/09/2008 - 00:56 por Pedro | Informe spam
Segun he visto los nuevos tipos fecha de SQL 2008, si uno define un tipo
DATE ya se puede hacer en confianza una comparacion puntual de la forma:

select ... from tabla where fecha='20080901'

y no como antes con los tipos datetime

select ... from tabla where fecha>='20080901' and fecha<'20080902'

?

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
02/09/2008 - 01:27 | Informe spam
Pedro.

Lo que planteas es correcto. Solo quiero agregar que el formato literal por
defecto es 'yyyy-mm-dd'.

select ... from tabla where fecha='2008-09-01'

Ademas, solo ocupa 3 bytes y ofrece mayor rango de fechas.


AMB


"Pedro" wrote:

Segun he visto los nuevos tipos fecha de SQL 2008, si uno define un tipo
DATE ya se puede hacer en confianza una comparacion puntual de la forma:

select ... from tabla where fecha='20080901'

y no como antes con los tipos datetime

select ... from tabla where fecha>='20080901' and fecha<'20080902'

?



Respuesta Responder a este mensaje
#2 Pedro
02/09/2008 - 02:03 | Informe spam
Ok.

Gracias


"Alejandro Mesa" escribió en el
mensaje news:
Pedro.

Lo que planteas es correcto. Solo quiero agregar que el formato literal
por
defecto es 'yyyy-mm-dd'.

select ... from tabla where fecha='2008-09-01'

Ademas, solo ocupa 3 bytes y ofrece mayor rango de fechas.


AMB


"Pedro" wrote:

Segun he visto los nuevos tipos fecha de SQL 2008, si uno define un tipo
DATE ya se puede hacer en confianza una comparacion puntual de la forma:

select ... from tabla where fecha='20080901'

y no como antes con los tipos datetime

select ... from tabla where fecha>='20080901' and fecha<'20080902'

?



Respuesta Responder a este mensaje
#3 Rubén Garrigós
02/09/2008 - 08:42 | Informe spam
Hola Pedro,

Quisiera añadir un pequeño script para dejar claras algunas cosas respecto a
las diferencias entre las conversiones entre cadenas y los tipos de datos
fecha/datetime en SQL Server 2008. Como podeis ver, con el tipo de datos DATE
mientras respetes el incluir año, mes y día puedes usar varios formatos sin
problemas de forma independiente al idioma del usuario de SQL Server. Sin
embargo si utilizamos DATETIME el único formato que nos aporta esta
independencia es el conocido YYYYMMDD sin separadores.

USE tempdb;
CREATE TABLE test (fecha DATE);
CREATE TABLE test2 (fecha DATETIME);

SET LANGUAGE 'SPANISH';

INSERT INTO test VALUES ('2008-09-30'); -- OK
INSERT INTO test VALUES ('2008/09/30'); -- OK
INSERT INTO test VALUES ('20080930'); -- OK

SET LANGUAGE 'ENGLISH';

INSERT INTO test VALUES ('2008-09-30'); -- OK
INSERT INTO test VALUES ('2008/09/30'); -- OK
INSERT INTO test VALUES ('20080930'); -- OK

SET LANGUAGE 'SPANISH';

INSERT INTO test2 VALUES ('2008-09-30'); -- Fallo
INSERT INTO test2 VALUES ('2008/09/30'); -- Fallo
INSERT INTO test2 VALUES ('20080930'); -- OK

SET LANGUAGE 'ENGLISH';

INSERT INTO test2 VALUES ('2008-09-30'); -- OK
INSERT INTO test2 VALUES ('2008/09/30'); -- OK
INSERT INTO test2 VALUES ('20080930'); -- OK

Rubén Garrigós
Solid Quality Mentors


"Pedro" wrote:

Ok.

Gracias


"Alejandro Mesa" escribió en el
mensaje news:
> Pedro.
>
> Lo que planteas es correcto. Solo quiero agregar que el formato literal
> por
> defecto es 'yyyy-mm-dd'.
>
> select ... from tabla where fecha='2008-09-01'
>
> Ademas, solo ocupa 3 bytes y ofrece mayor rango de fechas.
>
>
> AMB
>
>
> "Pedro" wrote:
>
>> Segun he visto los nuevos tipos fecha de SQL 2008, si uno define un tipo
>> DATE ya se puede hacer en confianza una comparacion puntual de la forma:
>>
>> select ... from tabla where fecha='20080901'
>>
>> y no como antes con los tipos datetime
>>
>> select ... from tabla where fecha>='20080901' and fecha<'20080902'
>>
>> ?
>>
>>
>>



Respuesta Responder a este mensaje
#4 Pedro
03/09/2008 - 00:11 | Informe spam
Pues por eso siempre uso YYYYMMDD como puse en el ejemplo arriba. El resto
es un probable problema adicional.

"Rubén Garrigós" escribió en el
mensaje news:
Hola Pedro,

Quisiera añadir un pequeño script para dejar claras algunas cosas respecto
a
las diferencias entre las conversiones entre cadenas y los tipos de datos
fecha/datetime en SQL Server 2008. Como podeis ver, con el tipo de datos
DATE
mientras respetes el incluir año, mes y día puedes usar varios formatos
sin
problemas de forma independiente al idioma del usuario de SQL Server. Sin
embargo si utilizamos DATETIME el único formato que nos aporta esta
independencia es el conocido YYYYMMDD sin separadores.

USE tempdb;
CREATE TABLE test (fecha DATE);
CREATE TABLE test2 (fecha DATETIME);

SET LANGUAGE 'SPANISH';

INSERT INTO test VALUES ('2008-09-30'); -- OK
INSERT INTO test VALUES ('2008/09/30'); -- OK
INSERT INTO test VALUES ('20080930'); -- OK

SET LANGUAGE 'ENGLISH';

INSERT INTO test VALUES ('2008-09-30'); -- OK
INSERT INTO test VALUES ('2008/09/30'); -- OK
INSERT INTO test VALUES ('20080930'); -- OK

SET LANGUAGE 'SPANISH';

INSERT INTO test2 VALUES ('2008-09-30'); -- Fallo
INSERT INTO test2 VALUES ('2008/09/30'); -- Fallo
INSERT INTO test2 VALUES ('20080930'); -- OK

SET LANGUAGE 'ENGLISH';

INSERT INTO test2 VALUES ('2008-09-30'); -- OK
INSERT INTO test2 VALUES ('2008/09/30'); -- OK
INSERT INTO test2 VALUES ('20080930'); -- OK

Rubén Garrigós
Solid Quality Mentors


"Pedro" wrote:

Ok.

Gracias


"Alejandro Mesa" escribió en el
mensaje news:
> Pedro.
>
> Lo que planteas es correcto. Solo quiero agregar que el formato literal
> por
> defecto es 'yyyy-mm-dd'.
>
> select ... from tabla where fecha='2008-09-01'
>
> Ademas, solo ocupa 3 bytes y ofrece mayor rango de fechas.
>
>
> AMB
>
>
> "Pedro" wrote:
>
>> Segun he visto los nuevos tipos fecha de SQL 2008, si uno define un
>> tipo
>> DATE ya se puede hacer en confianza una comparacion puntual de la
>> forma:
>>
>> select ... from tabla where fecha='20080901'
>>
>> y no como antes con los tipos datetime
>>
>> select ... from tabla where fecha>='20080901' and fecha<'20080902'
>>
>> ?
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida