`
kabike
  • 浏览: 609538 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

mysql timestamp和int存储时间

阅读更多
show create table 20130107date;

CREATE TABLE `20130107date` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `c_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `c_date_long` int(20) NOT NULL,
  `idx_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `idx_date_long` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `20130107date_idx_date` (`idx_date`),
  KEY `20130107date_idx_long` (`idx_date_long`)
) ENGINE=InnoDB

里面有90w数据,都是随机的时间.
先看没有索引的全表扫描

1 :
select COUNT(*) from 20130107date
where c_date BETWEEN DATE('20110101') and DATE('20110102')

这个需要1.54s

2:
select COUNT(*) from 20130107date
where c_date_long BETWEEN UNIX_TIMESTAMP('20110101') and UNIX_TIMESTAMP('20110102')

这个是2.3s

但是可以这样搞
3 :
select UNIX_TIMESTAMP('20110101') ,UNIX_TIMESTAMP('20110102');

得到结果1293811200和1293897600

然后
select COUNT(*) from 20130107date
where c_date_long BETWEEN 1293811200 and 1293897600;


发现变成了0.61s
1和2的差距还可以说是比较int和比较timestamp的差距,那么2和3的差距呢?难道多出来的时间是每一条记录都要evaluate UNIX_TIMESTAMP('20110102')?

然后用索引
select COUNT(*) from 20130107date
where idx_date_long BETWEEN UNIX_TIMESTAMP('20110101') and UNIX_TIMESTAMP('20110102');

select COUNT(*) from 20130107date
where idx_date BETWEEN '20110101' and '20110102'


毫无悬念,两个基本都是瞬时的.
分享到:
评论

相关推荐

    在MySql中获取当前系统当前时间的函数和TIMESTAMP列类型使用说明

    `TIMESTAMP` 是MySQL中一种非常有用的日期时间类型,它可以自动地更新为当前的日期和时间,并且可以存储从'1970-01-01 00:00:01' UTC到'2038年'之间的值。 #### TIMESTAMP 的显示格式 `TIMESTAMP` 列可以有不同的...

    mysql中int的日期格式处理

    在MySQL中,日期和时间数据类型的处理是数据库操作中的常见任务。然而,有时出于特定需求,我们可能需要将日期存储为整型,比如Unix时间戳。这种情况下,我们需要掌握将整型日期转换为日期类型,以及反之转换的方法...

    mysql之TIMESTAMP(时间戳)用法详解

    MySQL中的TIMESTAMP字段类型是用来存储时间戳值的,它可以记录自1970年1月1日00:00:00 UTC(协调世界时)以来的秒数。TIMESTAMP在不同的情境下有不同的用法,这主要体现在它的默认值和更新策略上。 1. **TIMESTAMP ...

    mysql如何设置默认时间为当前时间

    在MySQL中,`TIMESTAMP`类型是一种存储日期和时间的特殊数据类型,它可以精确到秒,并且具有自动更新和初始化的能力。当你在表定义中指定`DEFAULT CURRENT_TIMESTAMP`和`ON UPDATE CURRENT_TIMESTAMP`时,`TIMESTAMP...

    解析MySQL中存储时间日期类型的选择问题

    一般应用中,我们用timestamp,datetime,int类型来存储时间格式: int(对应javaBean中的Integer或int) 1. 占用4个字节 2. 建立索引之后,查询速度快 3. 条件范围搜索可以使用使用between 4. 不能使用mysql提供...

    MySql性能调优(一)字段类型的选取之时间类型

    TIMESTAMP 类型用于存储日期和时间信息,格式为 ‘YYYY-MM-DD HH:MM:SS’,占用 4 字节的存储空间。TIMESTAMP 类型与 DATETIME 类型类似,但 TIMESTAMP 类型有一个自动更新的功能,即在插入或更新数据时,TIMESTAMP ...

    mysql 自增长 时间字段

    在实际应用中,我们经常需要对数据进行自增长和时间戳记录,本文将详细介绍 MySQL 中的自增长和时间字段的使用。 自增长字段 在 MySQL 中,我们可以使用 auto_increment 属性来实现字段的自增长。例如,在创建用户...

    关于MySQL 时间类型 datetime、bigint、timestamp,你用哪个?

    在MySQL中,根据不同的应用场景和需求,可以选择多种方式来存储日期和时间信息。本篇文章将详细介绍三种常用的时间类型:`datetime`、`bigint` 和 `timestamp`,并通过一个实际的例子来探讨它们在不同场景下的表现。...

    mysql自动生成时间1

    TIMESTAMP字段类型在MySQL中用于存储日期和时间信息,它的范围可以从'1970-01-01 00:00:01' UTC到'2038-01-19 03:14:07' UTC。与DATE或DATETIME不同,TIMESTAMP在存储时会自动转换为服务器的UTC时间,而在检索时再...

    在mysql建表中将日期设置为默认取得当前系统时间

    例如,在创建`USER`表时,`REGISTRATION_TIME`和`LAST_LOGIN_TIME`字段被定义为`TIMESTAMP`类型,并分别设置了默认值为`CURRENT_TIMESTAMP`,这意味着每当有新记录插入时,如果没有显式提供时间,则这两个字段将自动...

    MySQL中你应该使用什么数据类型表示时间.docx

    它提供自动初始化和更新到当前的日期和时间的功能,只需在列的定义中设置 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP。 使用 INT 字段保存 Unix 时间 使用 INT 字段保存 Unix 时间是最普通的方法...

    Java中数据类型和MYSQL中数据类型的对比

    2. 日期和时间类型:MySQL 的日期和时间类型包括 DATETIME、DATE、TIMESTAMP、TIME 和 YEAR。DATETIME 可以存储日期和时间,而 DATE 和 TIME 分别只存储日期和时间部分。TIMESTAMP 类型特别之处在于它可以自动更新,...

    MySQL 时间相关查询

    MySQL提供了一个名为`FROM_UNIXTIME()`的函数,用于将这种时间戳转换为可读的日期和时间格式。该函数接受两个参数,第一个参数是Unix时间戳,第二个参数是可选的时间格式字符串。如果没有提供格式字符串,它会默认以...

    Mysql使用存储过程快速添加百万数据.docx

    在本文中,我们使用 INT、VARCHAR、TIMESTAMP 等数据类型来定义用户表的结构。 知识点八:Mysql 索引 Mysql 索引是指 Mysql 数据库中的索引。索引可以提高查询的速度,但是它也会增加数据添加的时间。在本文中,...

    mysql基础知识和mysql优化整理

    2. 数据类型:MySQL支持多种数据类型,如整数类型(TINYINT、INT、BIGINT)、浮点类型(FLOAT、DOUBLE)、字符串类型(CHAR、VARCHAR、TEXT)、日期和时间类型(DATE、TIME、DATETIME、TIMESTAMP)等。 3. SQL语言...

    MYSQL存储过程.pdf

    MySQL支持多种数据类型,包括数值类型(如`INT`, `FLOAT`)、字符串类型(如`VARCHAR`, `CHAR`)和日期时间类型(如`DATE`, `TIMESTAMP`)等。 #### 变量 - **自定义变量**:可以在存储过程中声明变量,并对其进行...

    Java数据类型和MySql数据类型对应表

    这些数据类型都可以用来存储日期和时间值,但它们的格式和取值范围不同。例如,DATE 是年月日格式,DATETIME 是年月日时分秒格式,而 TIMESTAMP 是时间戳格式。 枚举类型包括 ENUM 和 SET。这些数据类型都可以用来...

    mysql多个TimeStamp设置的方法解读

    MySQL中的Timestamp类型是一种用于存储日期和时间的字段类型,它特别适用于记录数据的创建和更新时间。Timestamp在MySQL中有两种常见的特殊属性:默认值为CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP。 1. ...

Global site tag (gtag.js) - Google Analytics