fecha con campo en segundos a partir del 1/1/1601

09/11/2004 - 20:12 por juan carlos angelucci | Informe spam
Gente estoy trabajando con un equipo de telefonia ip que guarda los datos de
inicio y fin de las llamadas en segundos contando desde el 1/1/1601, como el
programa no se puede modificar estoy buscando la forma de armar un select
que realize la cuenta directamente.

pense en:

Select dateadd(second, cast(ConnectTime as decimal),cast('1/1/1601' as
datetime)) as datecdr from basecdr

pero no funciona da el siguiente error

Select dateadd(second, cast(ConnectTime as decimal),cast('1/1/1601' as
datetime)) as datecdr from basecdr

aparentemente el problema esta en que 1601 no es un año valido para el
datetime, pero no encuentro forma de resolver esto sin tener que hacer algo
mas complejo.

alguna sugerencia?

Preguntas similare

Leer las respuestas

#1 juan carlos angelucci
09/11/2004 - 20:30 | Informe spam
Perdon, el error es

The conversion of a char data type to a datetime data type resulted in an
out-of-range datetime value.

el campo ConnectTime es un campo varchar(64)

Gracias!

"juan carlos angelucci" wrote in message
news:%
Gente estoy trabajando con un equipo de telefonia ip que guarda los datos


de
inicio y fin de las llamadas en segundos contando desde el 1/1/1601, como


el
programa no se puede modificar estoy buscando la forma de armar un select
que realize la cuenta directamente.

pense en:

Select dateadd(second, cast(ConnectTime as decimal),cast('1/1/1601' as
datetime)) as datecdr from basecdr

pero no funciona da el siguiente error

Select dateadd(second, cast(ConnectTime as decimal),cast('1/1/1601' as
datetime)) as datecdr from basecdr

aparentemente el problema esta en que 1601 no es un año valido para el
datetime, pero no encuentro forma de resolver esto sin tener que hacer


algo
mas complejo.

alguna sugerencia?


Respuesta Responder a este mensaje
#2 ulises
09/11/2004 - 20:37 | Informe spam
Si lees el BOL, verás que el tipo de datos smalldatetime
soporta fechas superiores a 1900-01-01 y si es datetime
soporta fechas superiores a 1753, esto se explica
generalmente porque el calendario gregoriano recien fue
adoptado alrededor de 1752 por el mundo anglosajón.

Saludos,
Ulises

Gente estoy trabajando con un equipo de telefonia ip que


guarda los datos de
inicio y fin de las llamadas en segundos contando desde el


1/1/1601, como el
programa no se puede modificar estoy buscando la forma de


armar un select
que realize la cuenta directamente.

pense en:

Select dateadd(second, cast(ConnectTime as


decimal),cast('1/1/1601' as
datetime)) as datecdr from basecdr

pero no funciona da el siguiente error

Select dateadd(second, cast(ConnectTime as


decimal),cast('1/1/1601' as
datetime)) as datecdr from basecdr

aparentemente el problema esta en que 1601 no es un año


valido para el
datetime, pero no encuentro forma de resolver esto sin


tener que hacer algo
mas complejo.

alguna sugerencia?


.

Respuesta Responder a este mensaje
#3 Isaias
09/11/2004 - 20:41 | Informe spam
En efecto, tu "fecha", no es una fecha valida, ejecuta esto:

SELECT ISDATE('1/1/1601')

De ser una fecha valida, deberia darte un UNO.
Respuesta Responder a este mensaje
#4 juan carlos angelucci
09/11/2004 - 20:51 | Informe spam
y hay alguna posibilidad para resolver este tema desde el sql y no desde una
app?


"juan carlos angelucci" wrote in message
news:%
Gente estoy trabajando con un equipo de telefonia ip que guarda los datos


de
inicio y fin de las llamadas en segundos contando desde el 1/1/1601, como


el
programa no se puede modificar estoy buscando la forma de armar un select
que realize la cuenta directamente.

pense en:

Select dateadd(second, cast(ConnectTime as decimal),cast('1/1/1601' as
datetime)) as datecdr from basecdr

pero no funciona da el siguiente error

Select dateadd(second, cast(ConnectTime as decimal),cast('1/1/1601' as
datetime)) as datecdr from basecdr

aparentemente el problema esta en que 1601 no es un año valido para el
datetime, pero no encuentro forma de resolver esto sin tener que hacer


algo
mas complejo.

alguna sugerencia?


Respuesta Responder a este mensaje
#5 ulises
09/11/2004 - 21:45 | Informe spam
Hum, podrias usar la fecha 1901-01-01 en lugar de
1601-01-01 y luego sumarle los segundos que hay en los 300
años faltantes.

Saludos,
Ulises

y hay alguna posibilidad para resolver este tema desde el


sql y no desde una
app?


"juan carlos angelucci" wrote in


message
news:%
Gente estoy trabajando con un equipo de telefonia ip que




guarda los datos
de
inicio y fin de las llamadas en segundos contando desde




el 1/1/1601, como
el
programa no se puede modificar estoy buscando la forma




de armar un select
que realize la cuenta directamente.

pense en:

Select dateadd(second, cast(ConnectTime as




decimal),cast('1/1/1601' as
datetime)) as datecdr from basecdr

pero no funciona da el siguiente error

Select dateadd(second, cast(ConnectTime as




decimal),cast('1/1/1601' as
datetime)) as datecdr from basecdr

aparentemente el problema esta en que 1601 no es un año




valido para el
datetime, pero no encuentro forma de resolver esto sin




tener que hacer
algo
mas complejo.

alguna sugerencia?






.

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida