我们知道,mysql里边,日期类型有很多表现形式,date, datetime,timestamp等类型。考虑这样一种场景:
按时间段拉取给定时间段的内容,这时,我们就得使用日期类型的比较了。
表结构:tablename_tbl
+-----------------+--------------+------+-----+-------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+--------------+------+-----+-------------------+----------------+
| id | mediumint(8) | NO | PRI | NULL | auto_increment |
| title | varchar(40) | NO | | NULL | |
| content | mediumtext | NO | | NULL | |
| addtime | timestamp | NO | | CURRENT_TIMESTAMP | |
其中addtime为timestamp类型的,现在我们要拉去过去三小时内新增的记录,我们可以采取比较unix时间戳以及比较日期这两种方式实现;
首先看第一种:unix时间戳比较
Mysql内置函数:UNIX_TIMESTAMP()
若无参数调用,则默认返回一个 从 '1970-01-01 00:00:00' 到当前时刻的秒数(无符号整数)。若用date 来调用 unix_timestamp(),它会返回从 '1970-01-01 00:00:00' 到 date表示的时刻为止的秒数;date 可以是一个 date 字符串、一个 datetime字符串、一个 timestamp或一个当地时间的yymmdd 或yyymmdd格式的数字。
则sql语句可以这样写:
select id,title,content,addtime from tablename_tbl where UNIX_TIMESTAMP(addtime)>= UNIX_TIMESTAMP() - 10800 and UNIX_TIMESTAMP(addtime) <= UNIX_TIMESTAMP() //108