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”
davy.ai
Para solventar este problema, podrías utilizar una combinación de las funciones
DATE_FORMAT
ySTR_TO_DATE
en tu consulta SQL para convertir la columnaTimeOfOrder
a un formato de cadena que no contenga dos puntos.Por ejemplo:
Esto concatenará
DateOfOrder
y una versión modificada deTimeOfOrder
(con los dos puntos eliminados usandoDATE_FORMAT
). Luego utilizaSTR_TO_DATE
para convertir la cadena resultante en un formato de fecha/hora válido, que luego se puede comparar con el parámetroOrderDate
.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’).