MySql查询时间段的⽅法(转)
本⽂实例讲述了MySql查询时间段的⽅法。分享给⼤家供⼤家参考。具体⽅法如下:
MySql查询时间段的⽅法未必⼈⼈都会,下⾯为您介绍两种MySql查询时间段的⽅法,供⼤家参考。
MySql的时间字段有date、time、datetime、timestamp等,往往我们在存储数据的时候将整个时间存在⼀个字段中,采⽤datetime类型;也可能采⽤将⽇期和时间分离,即⼀个字段存储date,⼀个字段存储时间time。⽆论怎么存储,在实际应⽤中,很可能会出现包含“时间段”类型的查询,⽐如⼀个访问记录数据库,需要统计每天的访问数量,这个每天就是⼀个时间段。下⾯介绍MySql查询时间段的两种常见⽅法,其他数据库也可以类似实现。
⽅法⼀:传统⽅式,即指定开始时间和结束时间,⽤"between”或者"<",">"来建⽴条件,⽐如查询2010年3⽉1⽇到2010年3⽉2⽇的数据条数,则可以使⽤
复制代码代码如下:
select count(*) from sometable where datetimecolumn>='2010-03-01 00:00:00' and datetimecolumn<'2010-03-02 00:00:00'
但是,这种⽅法由于时间不是整数型数据,所以在⽐较的时候效率较低,所以如果数据量较⼤,可以将时间转换为整数型的UNIX时间戳,这就是⽅法⼆。
⽅法⼆:UNIX时间戳,每个时间对应了⼀个唯⼀的UNIX时间戳,该时间戳是从'1970-01-01 00:00:00' 为0开始计时,每秒增加1。MySql内置了传统时间和UNIX时间的互换函数,分别为:
UNIX_TIMESTAMP(datetime)
FROM_UNIXTIME(unixtime)
⽐如运⾏
复制代码代码如下:
SELECT UNIX_TIMESTAMP('2010-03-01 00:00:00')
返回1267372800
运⾏
复制代码代码如下:
SELECT FROM_UNIXTIME(1267372800)
返回'2010-03-01 00:00:00'
于是,我们可以将时间字段⾥的数据替换为整型的UNIX时间,这样,⽐较时间就成为整数⽐较了,建⽴索引后能⼤⼤提⾼效率。在查询的时候,需要把起点时间和结尾时间分别转换为UNIX时间再进⾏⽐较,如:
复制代码代码如下:
tabletimeselect count(*) from sometable where datetimecolumn>=UNIX_TIMESTAMP('2010-03-01 00:00:00') and
datetimecolumn<UNIX_TIMESTAMP('2010-03-02 00:00:00')
也可以在调⽤程序中先转换为UNIX时间再传⼊MySql,总之这种⽅式有利于快速查询时间段,不过显⽰时间则需要再反转⼀次。
希望本⽂所述对⼤家的MySQL数据库程序设计有所帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。