La columna d
es FECHA, la columna t
es la hora, la columna v
es, por ejemplo, INT. Supongamos que necesito todos los valores registrados después de las 15:00 del 1 de febrero de 2012 y en adelante. Si escribo¿Cómo combinar la fecha y la hora de diferentes columnas MySQL para compararlas con un DateTime completo?
SELECT * FROM `mytable` WHERE `d` > '2012-02-01' AND `t` > '15:00'
todos los registros realizados antes de las 15:00 en cualquier fecha van a ser excluidos del conjunto de resultados (así como todos hechos en 2012-02-01) mientras que yo quiero verlos. Parece que sería fácil si hubiera una sola columna DATETIME, pero hay columnas separadas para fecha y hora en el caso de la mía.
Lo mejor que puedo ver ahora es algo así como
SELECT * FROM `mytable` WHERE `d` >= '2012-02-02' OR (`d` = '2012-02-01' AND `t` > '15:00')
Cualquier una mejor idea? Tal vez hay una función para esto en MySQL? ¿No hay algo como
SELECT * FROM `mytable` WHERE DateTime(`d`, `t`) > '2012-02-01 15:00'
posible?
¿Está realmente destinado a funcionar bien con los tiempos de fecha (lo que significa que no hay pérdida de rendimiento significativo y ningún comportamiento inesperado)? – Ivan
No estoy seguro ... puedes ejecutar 'explain' y ver cómo funciona. Por supuesto, usted siempre puede actualizar su tabla de forma masiva para usar una columna de fecha y hora en lugar de las dos separadas. –
si realmente desea una fecha, puede usar esto en su lugar http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html # function_str-to-date –