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

Problema con sqlserver mas update y concatenr fecha

Estas en el tema de Problema con sqlserver mas update y concatenr fecha en el foro de Bases de Datos General en Foros del Web. HOla tengo el siguiente problema, me dice que "hour" no es una funcion reconocida, alguien me puede ayudar,, quiero hacer un update en la tabla ...
  #1 (permalink)  
Antiguo 06/01/2004, 07:41
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
Exclamación Problema con sqlserver mas update y concatenr fecha

HOla

tengo el siguiente problema, me dice que "hour" no es una funcion reconocida, alguien me puede ayudar,, quiero hacer un update en la tabla Tmetasoft, en la columna fechahora

aqui va la consulta que hice que me dice error, no se si habra problemas en la concatenacion o en la parte que dejo un espacio antes de la hora ya que debe haber un espacio para uqe cumpla el formato

mes/dia/año hora:minuto:segundo


update tmetasoft set tfechahora=day(Tfechahora)+'/'+month(Tfechahora)+'/'+year(2004)+''+hour(Tfechahora)+'/'+minute(Tfechahora)+'/'+second(Tfechahora)
WHERE MONTH(Tfechahora) = 1;
  #2 (permalink)  
Antiguo 07/01/2004, 10:32
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Esa función no exsite en SQL, al menos en la versión 7.0, debes utilizar la función DatePart


update tmetasoft set tfechahora= Cast(day(Tfechahora) as varchar(2)) + '/' + Cast(month(Tfechahora) as varchar(2)) + '/' +
'2004' + ' ' + Cast(datepart(hh, Tfechahora) as varchar(2)) + ':' +
Cast(datepart(mi, Tfechahora) as varchar(2)) + ':' + Cast(datepart(ss, Tfechahora) as varchar(2))


y además... el año de 2004 Year(2004) no es nada, saldrá un año muy raro, pon directamente 2004 si es lo que quieres hacer...



Un saludo
  #3 (permalink)  
Antiguo 07/01/2004, 13:02
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
me dice incorrect sintax near '2004'
  #4 (permalink)  
Antiguo 07/01/2004, 13:10
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Prueba a escribir la consulta así

update tmetasoft set tfechahora= Cast(day(Tfechahora) as varchar(2)) + '/' + Cast(month(Tfechahora) as varchar(2)) + '/2004 ' + Cast(datepart(hh, Tfechahora) as varchar(2)) + ':' +
Cast(datepart(mi, Tfechahora) as varchar(2)) + ':' + Cast(datepart(ss, Tfechahora) as varchar(2))
  #5 (permalink)  
Antiguo 07/01/2004, 13:18
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
mmm pucha sigue aun el mismo error,,, se podra convertir en varchar o en date ,,??
  #6 (permalink)  
Antiguo 07/01/2004, 13:23
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Intenta a ponerle otro cast a esa expresión .... + Cast('/2004 ' AS varchar(6)) + .....
  #7 (permalink)  
Antiguo 07/01/2004, 16:47
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
me funciona la actualiacion en la tabla metasoft sin problemas pero al hacer update en la tabla Thistorica me dice lo siguiente



Server: Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type datetime.


mi consulta es:


SELECT TFECHA
FROM THistorica
WHERE MONTH(TFECHA) = 1 AND
Tempresa = ' COLMENAAPOQ'


el formato que tiene la fecha de tfecha es la siguiente
10/21/2003
  #8 (permalink)  
Antiguo 07/01/2004, 16:57
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
el update usado es

update THISTORICA set tfecha= Cast(day(Tfecha) as varchar(2)) + '/' + Cast(month(Tfecha) as varchar(2)) + '/04 ' where Cast(month(Tfecha) as varchar(2))=1 AND Tempresa=' COLMENAAPOQ'
  #9 (permalink)  
Antiguo 08/01/2004, 02:54
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Estás poniendo el formato de fecha como dd/mm/aaaa, cambialo a mm/dd/aaaa, y eso dará una fecha válida para el sistema.

En principio parece ser ese el error
  #10 (permalink)  
Antiguo 08/01/2004, 08:31
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
mmm
sigue el error mira ahora hice una cinsulta muysimple para ver si era ese elcproblema y me da el mismo error

consulta:
Select tfecha from thistorica where month(tfecha)=01

Error:
server: Msg 8115, level 16, State2 line1
Arithmetic overflow error convering expression to data type datetime

lo cual me extraña., qu apra algo tan simple me haga overflow, , cual sera el problema

lo extraño que al decir
select tfecha from thistorica

me trae el resultado sin problemas ,pero al darle una condicion un where me queda la grande,, alguien mepeude ayudarr
  #11 (permalink)  
Antiguo 08/01/2004, 09:44
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
El campo tfecha de la tabla historica es del tipo datetime???
  #12 (permalink)  
Antiguo 08/01/2004, 10:08
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
sip
  #13 (permalink)  
Antiguo 08/01/2004, 10:10
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
nop es varchar... ese sera el problema?
  #14 (permalink)  
Antiguo 08/01/2004, 10:19
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Probablemente si, sobretodo depende del formato con el que esté grabada la fecha
  #15 (permalink)  
Antiguo 08/01/2004, 10:23
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
10/21/2003


como le digo porque ya que es varchar, solo deberia tatarlo como tal ,como le puedo decir que divida el string en tres partes y donde la ultima parte sea 2003 deje 2004?'
  #16 (permalink)  
Antiguo 08/01/2004, 10:41
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Si suponemos que todo van a ser fechas, sólo tendrías que reemplazar 2003 por 2004 tal cual

update THISTORICA set tfecha= Replace(tfecha, '2003', '2004')
  #17 (permalink)  
Antiguo 08/01/2004, 11:03
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
seguro??? no tendre problemas ya que el varchar tiene mes dia y año,,no me borrara los datos de adelante, ,,,y perdere todos los dias??
  #18 (permalink)  
Antiguo 08/01/2004, 11:13
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Hazte una copia de la tabla y pruébalo, si te borra cosas, buscamos otra solución
  #19 (permalink)  
Antiguo 08/01/2004, 13:48
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
teniendo ese sistema de fechha 10/01/2003

como puedo hacer un where para que tome el mes que va al medio y si es 01 osea enero cambie haga el replece de 2003 a 2004
  #20 (permalink)  
Antiguo 08/01/2004, 14:00
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
porque si digo

Replace(tfecha, '03', '04')

esto se refiere al año
pero que pasa si tengo el mes de marzo y el de abril tambien serian 03 y 04 por lo cual tambien me reemplezaria el mez de marzo a abril aparte del año,,,, como puedo decir que solo haga el replace atras en la ultima parte del string
  #21 (permalink)  
Antiguo 08/01/2004, 14:13
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
porque si digo

Replace(tfecha, '03', '04')

esto se refiere al año
pero que pasa si tengo el mes de marzo y el de abril tambien serian 03 y 04 por lo cual tambien me reemplezaria el mez de marzo a abril aparte del año,,,, como puedo decir que solo haga el replace atras en la ultima parte del string
  #22 (permalink)  
Antiguo 09/01/2004, 02:47
 
Fecha de Ingreso: abril-2003
Ubicación: Madrid
Mensajes: 707
Antigüedad: 21 años
Puntos: 0
Te estás complicando la vida en exceso, si el formato de fecha es con cuatro dígitos, sólo tienes que reeemplazar 2003 on 2004
  #23 (permalink)  
Antiguo 12/01/2004, 14:30
Usuario baneado!
 
Fecha de Ingreso: enero-2003
Mensajes: 184
Antigüedad: 21 años, 3 meses
Puntos: 0
si el dia y la fecha estan al reves al usar la siguiente
sentencia ocurre algun error??


update tmetasoft set tfechahora= Cast(day(Tfechahora) as varchar(2)) + '/' +

Cast(month(Tfechahora) as varchar(2)) + '-2004 ' + Cast(datepart(hh,

Tfechahora) as varchar(2)) + ':' +
Cast(datepart(mi, Tfechahora) as varchar(2)) + ':' + Cast(datepart(ss,

Tfechahora) as varchar(2)) where Cast(month(Tfechahora) as varchar(2))=1 AND

tempresa=' COLMENAAPOQ'

lo que pasa es que use esta sentencia en la mañana veia los datos de toda la mñana del dia 12 hasta que ala 1 de la tarde puse la sentecia para actualizar los campos de ls dias 3 4 5 de enero , y ahora yano aprece ninguno ,,por lo que pienso que quedo con algun formato raro, pero al hacer a query en la base de datos me muestar solo 5 resultados, cuando le digo que sea igual a

select * from TQoS1RegistrosResp where tempresa='colmenaapoq' and Cast(month(Tfechahora) as varchar(2))=1


pero si le digo

select * from TQoS1RegistrosResp where tempresa='colmenaapoq'

me muestra todos, sin problema y aparecen todos, los datos incluyendo los dias 3 ,4 ,5 de enero que se pierden al hacer la consulta en asp...

MI PREGUNTA ES:

SEA QUE CAMBIE ALGO Y ME QUEDO LA ESCOBA,,

ESTA ES LA FORMA COMO MUESTRA LOS DTOS EL PC EN LA QUERY

2004-05-01 16:04:26.000

ESO AYUDAAAAAA PORFAAAAAAA
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




La zona horaria es GMT -6. Ahora son las 16:11.