Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Fechas SQL Server

Estas en el tema de Fechas SQL Server en el foro de SQL Server en Foros del Web. Bueno tengo el siguiente problema.- Estoy recibiendo una fecha por procedimiento almacenado que viene como varchar y luego de verificar la fecha tengo que guardarla ...
  #1 (permalink)  
Antiguo 15/09/2010, 16:00
 
Fecha de Ingreso: enero-2010
Ubicación: Stgo - Chile
Mensajes: 73
Antigüedad: 14 años, 2 meses
Puntos: 0
Fechas SQL Server

Bueno tengo el siguiente problema.-

Estoy recibiendo una fecha por procedimiento almacenado que viene como varchar y luego de verificar la fecha tengo que guardarla en un campo datetime

Para verificar si es fecha o no ocupo la funcion ISDATE algo asi

select isdate('05/06/2010')

select isdate('05062010') -- No es fecha

select isdate('2010/06/05')

select isdate('20100605')

El tema es que cuando me llega como "NO es fecha" tengo que darla vuelta para que quede como fecha y guardarla

mi consulta es como lo hago para darla vuelta o si se puede convertir en datetime altiro para no darla vuelta.-

Ya que necesito guardar el campo en una seccion de datetime
  #2 (permalink)  
Antiguo 19/09/2010, 23:44
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 8 meses
Puntos: 180
Respuesta: Fechas SQL Server

Para que siempre sea fecha, que te la manden con ANSI (yyyy-mm-dd) y resuelves todos tus problemas.
__________________
MCTS Isaias Islas
  #3 (permalink)  
Antiguo 20/09/2010, 11:13
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 2 meses
Puntos: 447
Respuesta: Fechas SQL Server

No entiendo muy bien a qué te refieres con darle vuelta a la fecha pero me supongo que te refieres a que en el segundo ejemplo cambiar '05062010' por
'20100605' esto puedes hacerlo así:

Código SQL:
Ver original
  1. DECLARE @cadena VARCHAR(10)
  2. SET @cadena = '05062010'
  3. DECLARE @cadenaInvertida VARCHAR(10)
  4. SET @cadenaInvertida = SUBSTRING(@Cadena, 5, 4) + SUBSTRING(@Cadena, 3, 2) + SUBSTRING(@Cadena, 1 ,2)
  5. print @cadenaInvertida

Pero sigo sin entender mucho esta lógica, por ejemplo si yo te envío como parámetro
'abcdefgh' esto por supuesto no es una fecha, al darle vuelta quedaría 'efghcdab' lo cual tampoco es una fecha. por qué no cambias tu parámetro para recibir desde un inicio un datetime.

Saludos
Leo.
  #4 (permalink)  
Antiguo 20/09/2010, 12:29
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 8 meses
Puntos: 180
Respuesta: Fechas SQL Server

EXACTO !!!, o bien como comente, aunque se lo manden en un varchar, que cumpla con el formato ANSI
__________________
MCTS Isaias Islas
  #5 (permalink)  
Antiguo 21/09/2010, 05:59
 
Fecha de Ingreso: agosto-2010
Mensajes: 7
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Fechas SQL Server

Muy buenos días a todos,
Gracias por sus preguntas y respuestas, yo tengo prácticamente el mismo problema que degauss, pero no puedo pedir que me cambien ni el formato ni el tipo de datos, porque no tengo contacto con el fabricante del hardware que es el proveedor del software, solo puedo modificar la base de datos.
Las preguntas que tengo son: se puede pegar el código que gentilmente envía leonardo_josue en un triger, para que en lugar de insertar el dato que se recibe (que no lo puedo modificar) inserte el dato modificado?
Recibo la fecha en el siguiente formato '2010-09-21 10:15:32' y el programa da el error de que no puede convertir varchar a datetime. Sí acepta '21-09-2010 ...'
Hay alguna otra forma de insertar este dato en un campo datetime?
Muchas gracias por su atención y por favor disculpen que intervenga con otra pregunta, pero su ayuda es muy valiosa para mí.
  #6 (permalink)  
Antiguo 21/09/2010, 09:40
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 8 meses
Puntos: 180
Respuesta: Fechas SQL Server

Pues que extraño, porque esa fecha, es correcta, segun sql server:

Código SQL:
Ver original
  1. SELECT isdate('2010-09-21 10:15:30')
  2. -----------------------------------------------
  3. 1
__________________
MCTS Isaias Islas

Etiquetas: fechas, server, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 04:34.