Pregunta:
Fecha: 15-12-2017 03:01:58
(En Español)
tengo que update la hora de una fecha concreta en mysql con php..
he tratado esto pero no me resulta:
les estaría muy agradecida si me pueden ayudar a resolver
Votos: 0 - Respuestas: 12 - Vistas: 9 Compartir en: Google Facebook Twitter LinkedIn Link
detectar una fecha única y una id con php y mysql[Resuelta]
Hola a todos,tengo que update la hora de una fecha concreta en mysql con php..
he tratado esto pero no me resulta:
UPDATE register_test SET endtime='2017-12-07 18:30:00' WHERE begintime ='2017-12-07' and id_nr='0107092477' ORDER BY id_nr asc, begintime asc
les estaría muy agradecida si me pueden ayudar a resolver
Votos: 0 - Respuestas: 12 - Vistas: 9 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 15-12-2017 03:34:49 Si tu campo de fecha es de tipo datetime prueba asi:
("UPDATE register_test SET endtime='2017-12-07 18:30:00' WHERE DATE(begintime)='2017-12-07' AND id_nr='0107092477' ORDER BY id_nr asc, DATE(begintime) asc")
esto debido a que si registraste solo las fechas en estos campos deben aparecer asi: 2017-12-15 00:00:00, por ende debes tomar solo la fecha utilizando date en la consulta.
Ahora el order by no estoy seguro, en las simulaciones me tira error las consultas in ingresarlo, mientras que si no lo ingreso funcionan bien Votos: 1 - Link respuesta -
Fecha: 15-12-2017 05:23:03 Hola Carlos Quintero, funcionó al instante.Miles de gracias, me salvaste el fin de semana!!! Saludos Votos: 0 - Link respuesta
-
-
Fecha: 15-12-2017 19:39:12 Hola!
El ORDER_BY en un UPDATE no procede.
Lo que sí es obligatorio en la práctica es LIMIT 1, limitar la actualización a un registro. De no hacerlo actualizará todos los que encuentre.
Si el id es único sobra buscar por fecha, pero buena observación la de usar DATE(fecha) si solo tenemos la fecha y no la hora.
UPDATE register_test SET endtime='2017-12-07 18:30:00' WHERE id_nr='0107092477' LIMIT 1
Salud. Votos: 0 - Link respuesta -
Fecha: 16-12-2017 03:25:08 Gracias por el comentario, lo tendré que poner porque de hecho me cambió las fechas de los otros registros que encontró para la misma fecha la id_nr no es única en este caso.
Saludos y muchas gracias Votos: 0 - Link respuesta -
Fecha: 16-12-2017 04:07:10 y que parámetro único vas a utilizar?, pregunto porque el limit 1 solo actualizara un solo registro, en este caso el ultimo o el primero que encuentre. Si no es el que buscas actualizar quedaras en las mismas, en todo caso puedes utilizar tu id autoincremental si la tienes para identificar el registro que deseas actualizar, claro esto dependiendo del contexto en el que se encuentre tu función y la aplicación en general.
no es lo mismo decir
//Tomamos el WHERE como valor de ambito general y repetitivo UPDATE tabla SET campo=valor WHERE campo=valor limit 1 //por ende se actualiza el primer registro que encuentra sin importar el resto de los parametros
que decir
//Tomamos el where de una id unica, por ende no requerimos del limit y actualizamos exactamente el registro que buscamos UPDATE tabla SET campo=valor WHERE id=X
Votos: 0 - Link respuesta -
Fecha: 16-12-2017 04:35:13 tengo que saber los registros en horas de un día y a ellos cambiarle la hora ...ese registro tiene una id única pero por el momento me sería de auxilio si al menos cambia la última de un día..sino una fecha es un registro, eso es lo normal
Muchas gracias por el comentario y la pronta ayuda Carlos Quintero... Votos: 0 - Link respuesta -
Fecha: 16-12-2017 11:41:14 Hola saludos...
veo que ya te despejaron de la duda... pero por experiencia, te recomiendo que separes fecha y hora en diferentes campos...
Asi tambien que tu campo para el control de datos que no sea el "id" de la tabla, pues cuando se requiere migrar, a otro sistema, o similar o el mismo con otros datos, llega a dar problemas... trata de ocupar uno que no sea numerico autoincrementable, uno que tu mismo creas, ejemplo: time() <-- en el segundo que lo creas, y le agregas algo mas....
Saludos...
Stryfe™ Votos: 0 - Link respuesta -
Fecha: 18-12-2017 04:45:09 Te recomiendo que el WHERE de la consulta considere un campo único o llave primaria de la tabla de manera que puedas identificar de forma unívoca el registro que necesitas sin necesidad de usar ORDER BY. Puedes usarlo cuando deseas actualizar un conjunto de registros y junto a LIMIT actualizas sobre un número determinado, por ejemplo, los diez más antiguos se habilitan (se actualiza el campo correspondiente).
Además, te sugiero uses llave primaria para identificar el registro y un campo código para identificar el producto, con su nomenclatura correspondiente. La llave primaria autogenerada es más simple para relacionar las tablas, es más 'limpia'.
También comparto contigo que si tu base de datos llega a tener muchos usuarios que pudieran concurrir al mismo tiempo, se puede dar la posibilidad que lo hagan en el mismo time(). Si cabe la posibilidad, entonces corres el riesgo que varios registros tengan el mismo identificador... desecha la idea, porque va a suceder (Ley de Murphy).
Por otro lado, el time() es autoincrementable numérico y ese valor es el mismo por el lapso de un segundo, en cambio la llave primaria autogenerada de la tabla es única siempre, y se pueden generar muchas distintas en un segundo.
Saludos Votos: 0 - Link respuesta -
Fecha: 18-12-2017 05:27:57 Gracias Néstor por la explicación , en la teoría lo sé y en la práctica uso el registro unico RE-ID, pero mi asunto era la parte técnica a la hora de leer un simple datetime, lo otro lo sé en la teoría ..
Gracias por la amabilidad de tomarte el tiempo, y tendré en cuenta tus sugerencias..feliz navidad! Votos: 0 - Link respuesta -
Fecha: 18-12-2017 09:51:37 "Asi tambien que tu campo para el control de datos que no sea el "id" de la tabla, pues cuando se requiere migrar, a otro sistema, o similar o el mismo con otros datos, llega a dar problemas... trata de ocupar uno que no sea numerico autoincrementable, uno que tu mismo creas, ejemplo: time() <-- en el segundo que lo creas, y le agregas algo mas...."
Nooo en el mismo segundo puede haber 100 registros, y además te estás cargando la integridad referencial en caso de que haya relaciones entre tablas! Votos: 0 - Link respuesta -
Fecha: 18-12-2017 10:29:39 Por eso puse el con algo mas, en mi caso es:
time dividido en dos, 1234567890 y le pongo algunos parámetros mas:
12345_random_67890_random (con una función el random, de solo letras mayúsculas y minúsculas ejemplo : 15083-2PZ1A-35274-ZXYNU ) y asi no solo tienes un id único, sino también sabes el momento de creación, para que si alguien intenta manipularlo, sabrás en que momento, fue creado, o el identificador del usuario etc... hay muchas posibilidades
(lo ocupo en un sistema con mas de 1.5 millones de llamadas a la base de datos al dia, y ni una vez se a repetido) :)
Saludos...
Stryfe™ Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
