MySql查询时间段的方法

 更新时间:2014年12月18日 10:17:24   投稿:shichen2014  
这篇文章主要介绍了MySql查询时间段的方法,包括了传统的针对时间字段的查询方法与UNIX时间戳的查询技巧,非常具有实用价值,需要的朋友可以参考下

本文实例讲述了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时间再进行比较,如:

复制代码 代码如下:
select 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数据库程序设计有所帮助。

相关文章

  • MySQL之临时表的实现示例

    MySQL之临时表的实现示例

    MySQL临时表是存储在内存或者磁盘上的临时数据表,它们的生命周期只限于当前数据库会话,临时表的创建和使用方式与普通表类似,本文就详细的介绍了MySQL之临时表,感兴趣的可以了解一下
    2023-08-08
  • MySQL六种约束的示例详解

    MySQL六种约束的示例详解

    约束是作用于表中字段上的规则,用于限制存储在表中的数据。这篇文章主要为大家整理了一下MySQL中六种约束的用法,感兴趣的可以了解一下
    2023-02-02
  • MySQL数据库聚合查询和联合查询详解

    MySQL数据库聚合查询和联合查询详解

    聚合查询就是在一个表里通过聚合函数进行查询操作,通常是求和,求平均值等操作,这篇文章主要介绍了MySQL聚合查询和联合查询的相关资料,需要的朋友可以参考下
    2024-03-03
  • Linux环境下安装MySQL数据库

    Linux环境下安装MySQL数据库

    这篇文章介绍了Linux环境下安装MySQL数据库的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • C#列出局域网中可用SQL Server服务器

    C#列出局域网中可用SQL Server服务器

    SQLDMO(SQL Distributed Management Objects,SQL分布式管理对象)封装了Microsoft SQL Server数据库中的对象。SQLDMO是Microsoft SQL Server中企业管理器所使用的应用程序接口,所以它可以执行很多功能,其中当然也包括对数据库的备份和恢复。
    2008-04-04
  • MySQL部署时提示Table mysql.plugin doesn’t exist的解决方法

    MySQL部署时提示Table mysql.plugin doesn’t exist的解决方法

    这篇文章主要介绍了MySQL部署时Table mysql.plugin doesn't exist的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • MySQL中int最大值深入讲解

    MySQL中int最大值深入讲解

    这篇文章主要给大家介绍了关于MySQL中int最大值的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • 设置MySQLroot账户密码报错ERROR 1064 (42000): You have an error in your SQL syntax;的解决方案

    设置MySQLroot账户密码报错ERROR 1064 (42000): You 

    在安装mysql的时候,设置root账户密码出现了ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds..错误,本文小编给大家介绍了相关的解决方案,需要的朋友可以参考下
    2023-12-12
  • MySQL mysqladmin客户端的使用简介

    MySQL mysqladmin客户端的使用简介

    这篇文章主要介绍了MySQL mysqladmin客户端的使用简介,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-03-03
  • MySQL数据库分组查询group by语句详解

    MySQL数据库分组查询group by语句详解

    这篇文章主要介绍了MySQL数据库分组查询group by语句详解,文中含有详细示例代码说明解析,有需要的朋友可以借鉴参考想=下,希望能够有所帮助
    2021-09-09

最新评论