es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo no hacer que el tiempo sea un parámetro vinculante en SQL, sino que un parámetro esté vinculado?

Deseo seleccionar órdenes después de las 23:00:00, pero con una solicitud de selección de fecha, sin embargo, al utilizar parámetros de asignación, el tiempo se reconoce como un parámetro para la asignación ya que contiene “:”, ¿cuál es la solución alternativa para esto? Solo necesito que OrderDate sea un parámetro de asignación.

WHERE TimeOfOrder >'23:00:00 'AND DateOfOrder =: OrderDate;

Captura de pantalla que muestra los parámetros de asignación “:00” y “:OrderDate”

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para solventar este problema, podrías utilizar una combinación de las funciones DATE_FORMAT y STR_TO_DATE en tu consulta SQL para convertir la columna TimeOfOrder a un formato de cadena que no contenga dos puntos.

    Por ejemplo:

    WHERE STR_TO_DATE(CONCAT(DateOfOrder, ' ', DATE_FORMAT(TimeOfOrder, '%H%i%s')), '%Y-%m-%d %H%i%s') > 'OrderDate 23:00:00'
    

    Esto concatenará DateOfOrder y una versión modificada de TimeOfOrder (con los dos puntos eliminados usando DATE_FORMAT). Luego utiliza STR_TO_DATE para convertir la cadena resultante en un formato de fecha/hora válido, que luego se puede comparar con el parámetro OrderDate.

    Se debe tener en cuenta que el parámetro OrderDate debe pasarse a la consulta sin el componente de tiempo, es decir, como una fecha simple (por ejemplo, ‘2021-05-01’).

Comments are closed.