Un método compacto y flexible para las marcas de tiempo sin fracciones de segundo sería:
SELECT * FROM table_name
WHERE field_name
BETWEEN UNIX_TIMESTAMP('2010-10-01') AND UNIX_TIMESTAMP('2010-10-31 23:59:59')
Si está utilizando segundos fraccionarios y una versión reciente de MySQL, entonces sería mejor tomar el enfoque de usar los operadores >=
y <
según Wouter's answer.
Aquí es un ejemplo de campos temporales definida con segunda precisión fraccionaria (máxima precisión en uso):
mysql> create table time_info (t_time time(6), t_datetime datetime(6), t_timestamp timestamp(6), t_short timestamp null);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into time_info set t_time = curtime(6), t_datetime = now(6), t_short = t_datetime;
Query OK, 1 row affected (0.01 sec)
mysql> select * from time_info;
+-----------------+----------------------------+----------------------------+---------------------+
| 22:05:34.378453 | 2016-01-11 22:05:34.378453 | 2016-01-11 22:05:34.378453 | 2016-01-11 22:05:34 |
+-----------------+----------------------------+----------------------------+---------------------+
1 row in set (0.00 sec)
Lo sentimos, no se menciona anteriormente, es una marca de tiempo unix, no una marca de tiempo mysql. – DRKM
Vi esta publicación y mi marca de tiempo funciona bien el problema al que me enfrento ahora si llamarlo con una combinación siempre devuelve cero filas devueltas ... mi consulta es así SELECCIONAR * DESDE db.t1, db.t2 DONDE t2 .t1_id = t1.id E timestamp> = '2014-06-21' Y marca de tiempo <= '2014-07-20'; –