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

INSERT Now() en BD Sql Server 2000

Estas en el tema de INSERT Now() en BD Sql Server 2000 en el foro de Bases de Datos General en Foros del Web. Hola, ¿porque esto no me funciona? INSERT INTO usuarios (fecha_alta) VALUES ('" & Now() & "') me dice el error [Microsoft][ODBC SQL Server Driver][SQL Server]Error ...
  #1 (permalink)  
Antiguo 22/04/2005, 10:14
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 19 años
Puntos: 0
INSERT Now() en BD Sql Server 2000

Hola,

¿porque esto no me funciona?

INSERT INTO usuarios (fecha_alta) VALUES ('" & Now() & "')

me dice el error [Microsoft][ODBC SQL Server Driver][SQL Server]Error de sintaxis al convertir una cadena de caracteres a datetime.

El campo fecha_alta es del tipo Datetime y no se cual es el problema. Si lo inserto con un recordset asi:

rs("fecha_alta") = Now()

funciona perfectamente. He probado a no poner directamente Now() en el INSERT y ponerlo asi:

fecha = formatdatetime(now(),vbgeneraldate)
INSERT INTO usuarios (fecha_alta) VALUES ('" & fecha & "')

que es lo mismo claro, pero me sigue dando el mismo error.

Si utilizo la funcion formatdatetime quedandome solo con la fecha 22/05/2005 si que se inserta bien, pero es que yo quiero insertar tambien la hora.

¿Alguien me podia decir como se hace esto?

Gracias
__________________
Silvia - Castellón :arriba:
  #2 (permalink)  
Antiguo 22/04/2005, 15:56
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Evitate problemas y hazlo todo en SQL:
Cita:
INSERT INTO usuarios (fecha_alta) VALUES (GetDateTime())
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #3 (permalink)  
Antiguo 22/04/2005, 16:54
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
humm

Si tienes todo correcto, esto deberia de funcionar bien

Código PHP:
insert into usuarios (fecha_altavalues(' & Now() &'
Eso se comvierte en esto:

Código PHP:
insert into usuarios (fecha_altavalues('4/22/2005 3:59:41 PM'
Sin embargo creo que algo tienes mal, porque si haces un insert directo solo sobre ese campo, debes de tener defaults asignados a todos los demas campos de la tabla, es decir...

id = IDENTITY = No te preocupas de el en el insert
campo1 = varchar1 default = "" = No te preocupas de el en el insert
fecha_alta = datetime

Si ese es el caso, entonces debe funcionar asi como lo tienes, pero puede ser que tengas algo como:

id = IDENTITY = No te preocupas de el en el insert
campo1 = varchar1 SIN DEFAULT = TE TIENES QUE preocupar de el en el insert
fecha_alta = datetime

Entonces debes hacer algo como

Código PHP:
"insert into usuarios (campo1, fecha_alta) values('Cadena_para_campo1_porque_no_tiene_defauilt', '" Now() "&')" 
Intentalo, y mira bien tus tablas.

Lo que menciona Mithrandir, tiene mas tema que discutir, en primer lugar tu estas usando la fecha de tu Servidor Web con Now(), y con getdate() usarias la fecha del servidor de bases de datos, que en base a las reglas de programación siempre debes usar para fechas la fecha del servidor de bases de datos, es decir, getdate(), sin embargo si usas la del Servidor de bases de datos, debes asegurarte de manejarlas siempre en tus operaciones con fechas, igual para con la del servidor de web, si estas usando el servidor de web para fechas, entonces siempre debes usar esta fecha.

Y ya que me parece que tu estas usando la del servidor de WEB siempre, entonces debes seguir usando esa y el getdate() no es recomendable para ti.

Suerte!!
  #4 (permalink)  
Antiguo 25/04/2005, 01:59
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 19 años
Puntos: 0
Yo en mi pagina web me baso en las fechas del servidor asi que no voy a utilizar la funcion getdate()

Para Neuron376,

Esto no funciona: insert into usuarios (fecha_alta) values(' & Now() &')

Yo estoy insertando muchos mas campos que solo la fecha de alta, pero el error me lo da ahi, mira esto es lo que hago:

gr="INSERT INTO grupoamigos (gr_usu_id, gr_usu_id_amigo, gr_activo, gr_mismo_dia, gr_un_dia, gr_una_semana, gr_activo_mail, gr_aviso_movil, new, incluido ) VALUES (328, 506, '" & true & "', '" & true & "', '" & false & "', '" & false & "', '" & true & "', '" & false & "', 1, '" & Now() & "')"

Set rs = conexionBD.Execute(gr)

Con lo que me sale por pantalla:

INSERT INTO grupoamigos (gr_usu_id, gr_usu_id_amigo, gr_activo, gr_mismo_dia, gr_un_dia, gr_una_semana, gr_activo_mail, gr_aviso_movil, new, incluido ) VALUES (328, 506, 'Verdadero', 'Verdadero', 'Falso', 'Falso', 'Verdadero', 'Falso', 1, '25/04/2005 09:57:13 a.m.')

y me dice:

Microsoft][ODBC SQL Server Driver][SQL Server]Error de sintaxis al convertir una cadena de caracteres a datetime.

El problema es porque hay un espacio entre la fecha y lo hora, o yo que se!

¿Alguien me puede ayudar?

Gracias
__________________
Silvia - Castellón :arriba:
  #5 (permalink)  
Antiguo 25/04/2005, 04:57
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 19 años
Puntos: 0
Al final me ha funcionado asi:

fecha = formatdatetime(now(),vbgeneraldate)

INSERT INTO usuarios (fecha_alta) VALUES ('" & fecha & "')

el problema era que tengo unos campos de tipo bit y yo insertaba con true o false en vez de con 0 y 1.

Gracias de todas formas
__________________
Silvia - Castellón :arriba:
  #6 (permalink)  
Antiguo 25/04/2005, 08:00
 
Fecha de Ingreso: septiembre-2004
Mensajes: 35
Antigüedad: 19 años, 7 meses
Puntos: 0
Para que no te quede duda porque veo que estas confundido "INSERT INTO usuarios (fecha_alta) VALUES (GetDateTime())" tambien devuelve la fecha del servidor. GetDate() es una funcion implicita del SQL Server.
  #7 (permalink)  
Antiguo 25/04/2005, 10:06
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Hola

"GetDateTime())" = En SQL = Fecha del Servidor de Base de Datos - SQL Server

"Now()" = En ASP = Fecha del Servidor WEB - IIS

Por eso no puede mezclarlas ambas en las consultas, porque tendria fechas diferentes en la base de datos, por eso es necesario seguir una linea en cuestion de fechas, recomendado la fecha del database, pero si esta usando siempre el WEB, etnonces asi debe seguir, aunque despues se dara cuenta que debe ser el database, pero eso cuando este en proyectos mas grandes.

silvia1977, que bueno que encontraste el error, segun la consulta es cierto lo que dices el error no era la fecha sino antes.

Suerte!!
  #8 (permalink)  
Antiguo 27/04/2005, 01:37
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 19 años
Puntos: 0
Ayuda!!

Socorro me vuelve a ocurrir el error de la fecha!!

INSERT INTO grupoamigos (gr_usu_id, gr_usu_id_amigo, gr_activo, gr_mismo_dia, gr_un_dia, gr_una_semana, gr_activo_mail, gr_aviso_movil, new, incluido ) VALUES (5003, 1562, '1', '1', '0', '0', '1', '0', 1, '27/04/2005 09:31:51 a.m.')

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC SQL Server Driver][SQL Server]Error de sintaxis al convertir una cadena de caracteres a datetime.

yo pongo:

fecha = formatdatetime(now(),vbgeneraldate)

gr="INSERT INTO grupoamigos (gr_usu_id, gr_usu_id_amigo, gr_activo, gr_mismo_dia, gr_un_dia, gr_una_semana, gr_activo_mail, gr_aviso_movil, new, incluido ) VALUES (" & grup("gr_usu_id_amigo") & ", " & gamigo("amigo") & ", '" & 1 & "', '" & 1 & "', '" & 0 & "', '" & 0 & "', '" & 1 & "', '" & 0 & "', 1, '" & fecha & "')"

Set rs = conexionBD.Execute(gr)

Por favor ayudarme!

Gracias
__________________
Silvia - Castellón :arriba:
  #9 (permalink)  
Antiguo 27/04/2005, 05:31
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 19 años
Puntos: 0
Ya lo tengo

Por si a alguien le sirve de ayuda he quitado los espacios de antes y despues de now() y me ha funcionado.

Antes: No funcionaba

gr="INSERT INTO grupoamigos (fecha) VALUES ('" & Now() & "')"
Set rs = conexionBD.Execute(gr)

Ahora: Ya funciona

gr="INSERT INTO grupoamigos (fecha) VALUES ('"& Now() &"')"
Set rs = conexionBD.Execute(gr)

Saludos
__________________
Silvia - Castellón :arriba:
  #10 (permalink)  
Antiguo 27/04/2005, 10:02
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Que raro!!!

Yo siempre programa con espacion, porque es mas limpio el codigo y mas facil de entender y jamas me ha dado un error como el que mencionas, esta muy raro, talvez era otra cosa, hummm, pero no se me ocurre que...

Bueno, suerte!! y lo tendre en cuenta si me llega a pasar algo asi.
  #11 (permalink)  
Antiguo 28/04/2005, 02:22
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 19 años
Puntos: 0
¡No lo entiendo!

Me ha vuelto a fallar el now()!!

Porque a veces me funciona y a veces me dice: Error de sintaxis al convertir una cadena de caracteres a datetime ¿?

No se que hacer... igual deberia insertar solo la fecha, pero es que me interesa tambien la hora...

La verdad es que no se si alguien me puede ayudar
__________________
Silvia - Castellón :arriba:
  #12 (permalink)  
Antiguo 28/04/2005, 10:57
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Bien...

Digo bien, porque lo que hiciste de los espacios no era la solucion, como tu dices en ocasiones falla y en ocasiones esta correcto, entonces lo que los espacios que mecionaste arriba no es el error.

Mira, haz una sesion de pruebas, es decir, trabaja en tu programa imprimiendo siempre la consulta SQL que estas enviando, algo como:

echo $Sql;

EJECUTAR($strSql);

Entonces podras ver el error siempre, debe ser seguramente que en algun momento la consulta $Sql esta mal creada, tal como te pasaba antes, algun parametro se esta pasando mal al momento de crear la consulta, entonces debes validar todos los campos que estas usando para crear la consulta.

Suerte!!
  #13 (permalink)  
Antiguo 09/05/2005, 09:18
 
Fecha de Ingreso: abril-2005
Mensajes: 1
Antigüedad: 19 años, 1 mes
Puntos: 0
De acuerdo Querida amiga Silvia

Querida amiga Silvia.
Me he suscrito especialmete a este foro para solucionar tus problemas, Te cuento...
Tu sentencia esta bien, los espacios puestos o la falta de los espacios entre cada variable no tiene nada que ver. Que te apuesto a que tu código te funciona bien a antes de los dias 12 de cada mes y que después del 12 empieza a fallar?.. bueno pues, esto se debe a que la version de SQL Server o la de tu IIS están en idiomas distintos, por ejemplo, cuando va a guardar una fecha, 13-05-2005, el formato de SQL está en dd/mm/yy (dia, mes año) y la de tu ISS está en mm/dd/yy (mes, dia , año)..¿¿Acaso existe un mes que sea 13?? lo que viene despues, la hora.. es un formato standart asi que no debieras tener problemas.. checkea eso

Si el IIS esta en inglés, podrías deglosar la fecha así:

Actual = Now()
fecha_registro="'"&Day(Actual) & "/" & Month(Actual) & "/" & Year(Actual)&"'"

Responde para ver que tal te fue

Saludos desde Pto Montt, Chile
  #14 (permalink)  
Antiguo 09/05/2005, 09:35
 
Fecha de Ingreso: septiembre-2004
Mensajes: 35
Antigüedad: 19 años, 7 meses
Puntos: 0
Si hubieras utilizado el GetDate() del SQL Server no tuvieras estos problemas.
Eso sucede porque los formatos de fecha del IIS y del SQL Server no son compatibles.
Por eso es mejor utilizarlo siempre en el formato por defecto del SQL porque sucede que cuando alguien te da el hosting no sabes el formato de fecha que tiene configurado el IIS o por el estilo.

Piensalo mejor.
Saludos
  #15 (permalink)  
Antiguo 11/05/2005, 08:10
Avatar de silvia1977  
Fecha de Ingreso: abril-2005
Mensajes: 54
Antigüedad: 19 años
Puntos: 0
Me funciono

Cita:
Iniciado por puma32
Querida amiga Silvia.
Me he suscrito especialmete a este foro para solucionar tus problemas, Te cuento...
Tu sentencia esta bien, los espacios puestos o la falta de los espacios entre cada variable no tiene nada que ver. Que te apuesto a que tu código te funciona bien a antes de los dias 12 de cada mes y que después del 12 empieza a fallar?.. bueno pues, esto se debe a que la version de SQL Server o la de tu IIS están en idiomas distintos, por ejemplo, cuando va a guardar una fecha, 13-05-2005, el formato de SQL está en dd/mm/yy (dia, mes año) y la de tu ISS está en mm/dd/yy (mes, dia , año)..¿¿Acaso existe un mes que sea 13?? lo que viene despues, la hora.. es un formato standart asi que no debieras tener problemas.. checkea eso

Si el IIS esta en inglés, podrías deglosar la fecha así:

Actual = Now()
fecha_registro="'"&Day(Actual) & "/" & Month(Actual) & "/" & Year(Actual)&"'"

Responde para ver que tal te fue

Saludos desde Pto Montt, Chile
Pues al final hice esto:

modificacion=now()
vector=split(modificacion," ")
fecha=vector(0)
hora=vector(1)

usu_mod=fecha &" "& hora

gr_d="INSERT INTO grupoamigos (gr_usu_id, gr_usu_id_amigo, gr_activo, gr_mismo_dia, gr_un_dia, gr_una_semana, gr_activo_mail, gr_aviso_movil, new, incluido ) VALUES (" & session("id") & ", " & remitente & ", '" & 1 & "', '" & 1 & "', '" & 0 & "', '" & 0 & "', '" & 1 & "', '" & 0 & "', 1, '" & usu_mod & "')"
Set rs_cruza_d = conexionBD.Execute(gr_d)

y me funciona ya siempre. Muchas gracias por vuestra ayuda.
__________________
Silvia - Castellón :arriba:
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 10:48.