Elegir el Tipo de Dato Fecha Apropiado

11/07/2008 - 17:58 por Emerson | Informe spam
Hola a Todos:
Bueno resulta que he leido que para manejar el tipo de datos fechas de SQL
es mejor manejarlo con dato ANSI (yyyymmdd), el cual nos evita muchos
problemas, mi pregunta es, que tipo de datos debe tener la tabla para que
esta opcion de manejar dicho tipo de dato sea la mas optima, o sea si creo
una tabla qeu tipo de datos debo asignarle al campo Fecha, varchar(8),
char(8), datetime, para que esta columna Fecha trabaje con el dato ANSI que
le voy a comparar. No se si me explique bien pero le pongo un pequeño
ejemplo:

Select Col1, Col2, Col3
From MiTabla
Where ColFecha='yyyymmdd'

Donde: Colfecha es un campo que almacena un tipo de dato fecha, que tipo
deberiade ser? varchar(8), char(8), datetime?? y por que, cual seria la
diferencia el uno del otro campo a asignarle.


*Uso SQL2000 SP4, WinXP
Y Como seria el mismo tema si Trabajaria con SQL 2005.


Saludos Coordiales y Gracias de Antemano a Todos

Emerson Q.

Preguntas similare

Leer las respuestas

#6 Emerson
12/07/2008 - 17:05 | Informe spam
Muchas Gracias por todo Alejandro, que tengas un buen dia. :)


"Alejandro Mesa" escribió en el
mensaje news:
Emerson,

Correcto. Puedes chequear la función "convert" en los BOL, para mas info
sobre el formato ISO8601.


AMB

"Emerson" wrote:

Muchas Gracias por tu aporte Alejandro.
Entonces puedo resumir diciendo que, no importa en que lenjuage este
definida para lamacenar el dato fecha, este mi servidor de datos, si yo
le
paso la fecha en formato ISO (yyyymmmdd) o ISO8601(no se cual es ese
formato) el motod de la BD lo interpreta sin nungun problema al lenguaje
que
esta determinado para el dato fecha almacena, estoy en lo correcto?????

Select campo1, campo2 From Tabla Where CampoFecha = 'yyyymmdd'
*donde: CampoFecha es de tipo datetime y segun su configuracion de idioma
puede contener: 31/01/2008 ó 01/31/2008 ó 2008/01/31 ó cualquier otro
tipo,
y cuando lo compare ante una fecha de tipo de dato ISO (20080131) no
habra
ningun problema de interpretacion de fecha.


Emerson Q.


"Alejandro Mesa" escribió en el
mensaje news:
> Emerson,
>
> Ademas de lo escrito por Jhonny, quiero agregar que SQL Server usa 8
> bytes
> para almacenar el tipo de data datetime, 4 bytes para la fecha, que
> indican
> los dias transcurridos antes o despues de 01/01/1900 y 4 para el
> tiempo,
> que
> indican el numero de 1/300 unidades transcurridas desde la media noche.
> SQL
> Server no usa ningun formato en especifico para almacenar esa
> informacion.
>
> Ahora, cuando queremos pasar un dato tipo datetime como constante,
> debemos
> usar una cadena de caracteres, correcto. SQL Server va a interpretar
> esa
> cadena de acuerdo al formato que esta tenga. Si el formato es
> independiente
> de el lenguaje en uso, como ISO o ISO8601, entonces no habra ningun
> problema,
> pero si el formato es dependiente, como U.S. o British, entonces si
> puede
> haber problemas si el codigo se ejecuta en servidor con diferente
> lenguaje
> al
> que se espera.
>
> Lo anterior no indica que debemos usar otro tipo de data para almacenar
> fechas en SQL Server, sino que debemos usar formatos independientes de
> el
> lenguaje, lo mas posible.
>
>
> AMB
>
>
> "Emerson" wrote:
>
>> Hola a Todos:
>> Bueno resulta que he leido que para manejar el tipo de datos fechas de
>> SQL
>> es mejor manejarlo con dato ANSI (yyyymmdd), el cual nos evita muchos
>> problemas, mi pregunta es, que tipo de datos debe tener la tabla para
>> que
>> esta opcion de manejar dicho tipo de dato sea la mas optima, o sea si
>> creo
>> una tabla qeu tipo de datos debo asignarle al campo Fecha, varchar(8),
>> char(8), datetime, para que esta columna Fecha trabaje con el dato
>> ANSI
>> que
>> le voy a comparar. No se si me explique bien pero le pongo un pequeño
>> ejemplo:
>>
>> Select Col1, Col2, Col3
>> From MiTabla
>> Where ColFecha='yyyymmdd'
>>
>> Donde: Colfecha es un campo que almacena un tipo de dato fecha, que
>> tipo
>> deberiade ser? varchar(8), char(8), datetime?? y por que, cual seria
>> la
>> diferencia el uno del otro campo a asignarle.
>>
>>
>> *Uso SQL2000 SP4, WinXP
>> Y Como seria el mismo tema si Trabajaria con SQL 2005.
>>
>>
>> Saludos Coordiales y Gracias de Antemano a Todos
>>
>> Emerson Q.
>>
>>
>>



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