`

MySQL日期、时间类型相关

 
阅读更多

 

MySQL 日期类型:日期格式、所占存储空间、日期范围 比较。

 

 日期类型      存储空间        日期格式                                           日期范围
------------  ---------       ---------------------             -----------------------------------------
 datetime     8 bytes   YYYY-MM-DD HH:MM:SS   1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
 timestamp  4 bytes   YYYY-MM-DD HH:MM:SS    1970-01-01 00:00:01 ~ 2038
 date           3 bytes    YYYY-MM-DD                    1000-01-01          ~ 9999-12-31
 year           1 bytes    YYYY                                1901                ~ 2155
 

 

在 MySQL 中创建表时,对照上面的表格,很容易就能选择到合适自己的数据类型。不过到底是选择 datetime 还是 timestamp,可能会有点犯难。这两个日期时间类型各有优点:datetime 的日期范围比较大;timestamp 所占存储空间比较小,只是 datetime 的一半。

 

另外,timestamp 类型的列还有个特性:默认情况下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。“自动”的意思就是,你不去管它,MySQL 会替你去处理。

 

一般情况下,我倾向于使用 datetime 日期类型。

 

MySQL 时间类型:时间格式、所占存储空间、时间范围。

 

时间类型        存储空间      时间格式                          时间范围
------------  ---------   --------------------- -----------------------------------------
 time           3 bytes       HH:MM:SS              -838:59:59          ~ 838:59:59
 

time 时间范围居然有这么大的范围,特别是 time 可以取负值,有点奇怪。后来,看了 MySQL 手册才知道这是为了满足两个日期时间相减才这样设计的。

 

select timediff('2000:01:31 23:59:59', '2000:01:01 00:00:00');  --  743:59:59

select timediff('2000:01:01 00:00:00', '2000:01:31 23:59:59');  -- -743:59:59

select timediff('23:59:59', '12:00:00');                        --  11:59:59

注意,timediff 的两个参数只能是 datetime/timestamp, time 类型的,并且这两个参数类型要相同。即:datetime/timestamp 和 datetime/timestamp 比较;time 和 time 相比较。

 

虽然 MySQL 中的日期时间类型比较丰富,但遗憾的是,这些日期时间类型只能支持到秒级别,不支持毫秒、微秒。也没有产生毫秒的函数。

 

 

now() 只能精确到秒。 

MySQL 中也没有存储带有毫秒、微秒的日期时间类型。

但是 MySQL 已经有抽取(extract)微秒的函数。例如:

 

select microsecond('12:00:00.123456');                          -- 123456

select microsecond('1997-12-31 23:59:59.000010');               -- 10

select extract(microsecond from '12:00:00.123456');             -- 123456

select extract(microsecond from '1997-12-31 23:59:59.000010');  -- 10

select date_format('1997-12-31 23:59:59.000010', '%f');         -- 000010

尽管如此,想在 MySQL 获得毫秒、微秒还是要在应用层程序中想办法。

假如在应用程序中获得包含微秒的时间:1997-12-31 23:59:59.000010,

在 MySQL 存放时,可以设计两个字段:c1 datetime, c2 mediumint,分别存放日期和微秒。

为什么不采用 char 来存储呢?用 char 类型需要 26 bytes,而 datetime + mediumint 只有 11(8+3) 字节。

 

 

参考地址1:http://mlxia.iteye.com/blog/278982

参考地址2:http://blog.csdn.net/lckj2009/article/details/6091993

分享到:
评论

相关推荐

    MySQL日期数据类型、MySQL时间类型使用总结

    ### MySQL日期数据类型与时间类型使用总结 在MySQL数据库中,日期和时间是十分重要的数据类型,被广泛应用于各种业务场景之中。为了更好地理解和运用这些数据类型,本篇将对MySQL中的日期数据类型和时间类型进行...

    mysql时间类型对应的java类型1

    本文将深入探讨MySQL数据库中的时间类型以及它们在Java编程语言中相对应的数据类型,以及如何在两者之间进行转换。 MySQL数据库提供了多种时间类型来处理日期和时间数据: 1. **DATE**:这个类型仅存储日期,格式...

    MySQL日期数据类型、MySQL时间类型使用总结.doc

    MySQL日期数据类型、MySQL时间类型使用总结.doc

    MySQL日期数据类型、MySQL时间类型使用总结.docx

    MySQL数据库在处理日期和时间数据时提供了多种数据类型,包括日期类型和时间...在MySQL 5.x及以上版本中,这些日期时间类型仅支持到秒级别,不包含毫秒或微秒。如果你需要更高的精度,可能需要在应用程序层面进行处理。

    2011年MySQL日期数据类型、MySQL时间类型使用总结.doc

    MySQL数据库在处理日期和时间数据时提供了多种数据类型,包括日期类型和时间类型,每种类型都有其特定的格式、存储空间占用以及适用范围。在选择适合的数据类型时,需要根据实际需求进行权衡。 首先,让我们来看看...

    mysql的日期和时间函数.rar

    1. **日期和时间类型** MySQL支持多种日期和时间数据类型,如DATE(仅日期)、TIME(仅时间)、DATETIME(日期和时间)和TIMESTAMP(时间戳)。每种类型都有其特定的存储范围和用途,开发者应根据需求选择合适的...

    MySQL 日期和时间类型.pdf

    以下是对MySQL中几种主要日期和时间类型的详细说明: 1. **DATE** 类型: DATE 类型用于存储日期,格式为 `YYYY-MM-DD`,占用3个字节,表示的范围是从 '1000-01-01' 到 '9999-12-31'。它适用于只关心日期而不涉及...

    mysql日期函数时间函数及加减运算

    MySQL 日期函数和时间函数是 MySQL 中非常重要的函数,用于处理日期和时间数据类型。这些函数可以帮助开发者快速获得当前日期和时间、执行日期和时间相关的操作。 获得当前日期时间函数 MySQL 中有多种方式可以...

    MySQL-数据类型、字符串类型、日期时间类型

    MySQL--数据类型、字符串类型、日期时间类型

    Java数据类型和MySql数据类型对应一览

    在 MySql 中,日期时间类型对应的是 DATE、TIME、DATETIME、TIMESTAMP 等类型。其中,DATE 类型用于存储日期,TIME 类型用于存储时间,DATETIME 类型用于存储日期和时间,TIMESTAMP 类型用于存储时间戳。 布尔类型 ...

    mysql 日期与时间的转换

    对于相反的操作——即从MySQL日期到Unix时间戳的转换,MySQL提供了一个名为`UNIX_TIMESTAMP()`的函数。该函数可以接受一个日期参数并返回对应的Unix时间戳值。 ##### 示例: ```sql SELECT UNIX_TIMESTAMP('2009-08...

    mysql时间转成数字-mysql日期转换和数字格式转换.pdf

    MySQL 中可以使用 STR_TO_DATE 函数将日期时间字符串转换为日期时间类型。例如,使用 `SELECT STR_TO_DATE('2009-06-05 12:00:00', '%Y-%m-%d %H:%i:%s')` 可以将字符串 '2009-06-05 12:00:00' 转换为日期时间类型。...

    MySQL日期类型表达式参照表.xlsx

    有关"mysql日期时间相关函数纪要"一文中的截图参照可在下载此附件Excel进行获取!

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

    MySql 提供了多种数据类型,包括整数类型、浮点数类型、字符串类型、日期时间类型、枚举类型等。每种数据类型都有其特点和用法。 在 MySql 中,整数类型包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT 等。这些...

    MySQL所有数据类型.pdf

    MySQL 的日期和时间类型用于存储日期和时间信息,包括日期、时间、日期时间和时间戳等。 ### DATE 类型 DATE 类型用于存储日期信息,占用 3 字节,范围从 1000-01-01 到 9999-12-31,格式为 YYYY-MM-DD。 ### ...

    Mysql日期和时间函数大全[归类].pdf

    Mysql日期和时间函数大全是Mysql中日期和时间处理函数的集合,它们用于处理日期和时间类型的数据。这些函数可以用于各种日期和时间相关的计算、比较和格式化操作。 日期和时间类型 在Mysql中,日期和时间类型包括...

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

    MySql性能调优(一)字段类型的选取之时间类型 在 MySQL 中,选择合适的字段类型对数据库的性能和数据存储效率具有重要影响。在本文中,我们将讨论 MySQL 中的时间类型,包括 DATE、TIME、DATETIME、TIMESTAMP 和 ...

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

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

    mysql数据类型转换

    - **日期时间类型** (`DATETIME`):表示日期和时间的组合值。 - **浮点数类型** (`DECIMAL`):表示固定精度的小数。 - **整数类型** (`SIGNED`):表示有符号的整数值。 - **无符号整数类型** (`UNSIGNED`):表示无...

Global site tag (gtag.js) - Google Analytics