MySQL时间戳选择日期范围

DRK*_*RKM 35 mysql timestamp

不确定从哪一个开始.任何人都可以帮助/指出我正确的方向.

我在MySQL中有一个时间戳列,我想选择一个日期范围,例如,2010年10月的所有时间戳.

谢谢.

Wou*_*ick 46

通常是这样的:

SELECT * 
  FROM yourtable
 WHERE yourtimetimefield>='2010-10-01'
   AND yourtimetimefield< '2010-11-01'
Run Code Online (Sandbox Code Playgroud)

但是因为你有一个unix时间戳,你需要这样的东西:

SELECT * 
  FROM yourtable
 WHERE yourtimetimefield>=unix_timestamp('2010-10-01')
   AND yourtimetimefield< unix_timestamp('2010-11-01')
Run Code Online (Sandbox Code Playgroud)


Cez*_*Cez 38

一种紧凑,灵活的时间戳方法,无需小数秒即可:

SELECT * FROM table_name 
WHERE field_name 
BETWEEN UNIX_TIMESTAMP('2010-10-01') AND UNIX_TIMESTAMP('2010-10-31 23:59:59')
Run Code Online (Sandbox Code Playgroud)

如果您使用小数秒和最新版本的MySQL,那么根据Wouter的答案,您最好采用使用>=<运算符的方法.

以下是使用小数秒精度(使用的最大精度)定义的时间字段的示例:

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)
Run Code Online (Sandbox Code Playgroud)


小智 6

我可以看到人们对这个问题发表了很多评论。但我认为,简单使用LIKE可以更容易地从表中获取数据。

SELECT * FROM table WHERE COLUMN LIKE '2013-05-11%'
Run Code Online (Sandbox Code Playgroud)

使用LIKE并发布数据通配符搜索。希望这能解决您的问题。


Dan*_*man 5

SELECT * FROM table WHERE col >= '2010-10-01' AND col <= '2010-10-31'
Run Code Online (Sandbox Code Playgroud)