美文网首页
MySql查询时间段的方法

MySql查询时间段的方法

作者: codersm | 来源:发表于2017-01-14 20:59 被阅读1444次

MySql的时间字段有date、time、datetime、timestamp等,往往我们在存储数据的时候将整个时间存在一个字段中,采用datetime类型;也可能采用将日期和时间分离,即一个字段存储date,一个字段存储时间time。无论怎么存储,在实际应用中,很可能会出现包含“时间段”类型的查询,比如一个访问记录数据库,需要统计每天的访问数量,这个每天就是一个时间段。

方法一:传统方式,即指定开始时间和结束时间,用"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)

于是,我们可以将时间字段里的数据替换为整型的UNIX时间,这样,比较时间就成为整数比较了,建立索引后能大大提高效率。在查询的时候,需要把起点时间和结尾时间分别转换为UNIX时间再进行比较,如:

select count(*) from sometable where datetimecolumn >= UNIX_TIMESTAMP('2010-03-01 00:00:00') 
and datetimecolumn< UNIX_TIMESTAMP('2010-03-02 00:00:00')

SELECT * FROM table
WHERE
    UNIX_TIMESTAMP(create_time) > UNIX_TIMESTAMP('2016-01-01 00:00:00')
AND UNIX_TIMESTAMP(create_time) < UNIX_TIMESTAMP('2017-12-28 00:00:00')

相关文章

  • MySql查询时间段的方法

    MySql的时间字段有date、time、datetime、timestamp等,往往我们在存储数据的时候将整个时...

  • 2018-03-20

    MYSQL查询语句 MYSQL复杂操作语句 MYSQL多表查询方法 函数部分

  • 记Mybatis与Navcait查询不一致的大坑。

    需求:想查询一个时间段范围内的数据,MySQL字段是datetime 问题复现: 在mybatis查询这个时间段的...

  • MYSQL查询时间段

    #昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时...

  • mysql按时间段查询

    今天 昨天 7天 近30天 本月 上一月 查询本季度数据 查询上季度数据 查询本年数据 查询上年数据 查询当前这周...

  • Python+MySQL数据库操作(PyMySQL)

    安装mysql驱动 连接数据库 建表 插入 查询 Python查询Mysql使用 fetchone() 方法获取单...

  • MySQL大数据量查询方法及优化

    看了一些关于MySQL查询的优化方法,发现MySQL的优化最离不开的就是索引,还有其他优化的小建议。 查询方法: ...

  • 查询获取排名

    参考 mysql 查询获取排名的方法(绝对有效)

  • MySQL慢查询

    定义 分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定...

  • 十一、慢查询分析工具

    mysql 慢查询分析工具一: mysql安装后自动安装mysqldumpslow慢查询工具 使用方法 分析前三条...

网友评论

      本文标题:MySql查询时间段的方法

      本文链接:https://www.haomeiwen.com/subject/ucysbttx.html