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
并发布数据通配符搜索。希望这能解决您的问题。
SELECT * FROM table WHERE col >= '2010-10-01' AND col <= '2010-10-31'
Run Code Online (Sandbox Code Playgroud)