MySQL数据类型 DATETIME和 DATE
来源:互联网 发布:mac下可以做java开发吗 编辑:程序博客网 时间:2024/05/29 14:57
DATETIME占用8字节,是占用空间最多的一种日期类型。它既显示了日期,同时也显示了时间。
其可以表达的日期范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。
DATE占用3字节,可显示的日期范围为“1000-01-01”到“9999-12-31”。
在MySQL数据库中,对日期和时间输入格式的要求是非常宽松的,以下的输入都可以视为日期类型。
2011-01-01 00:01:10
2011/01/01 00+01+10
20110101000110
11/01/01 00@01@10
其中,最后一种类型中的“11”有些模棱两可,MySQL数据库将其视为2011还是1911呢?下面来做个测试:
mysql> SELECT CAST('11/01/01 00@01@10' AS DATETIME) AS datetime\G;
*************************** 1. row ***************************
datetime: 2011-01-01 00:01:10
1 row in set (0.00 sec)
例如:
mysql> CREATE TABLE t ( a DATETIME );
Query OK, 0 rows affected (0.25 sec)
mysql> INSERT INTO t SELECT '2011-01-01 00:01:10.123456';
Query OK, 1 row affected (0.05 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM t\G;
*************************** 1. row ***************************
a: 2011-01-01 00:01:10
1 row in set (0.00 sec)
不过MySQL数据库提供了函数MICROSECOND来提取日期中的微秒值,示例如下:
mysql> SELECT MICROSECOND('2011-01-01 00:01:10.123456')\G;
*************************** 1. row ***************************
MICROSECOND('2011-01-01 00:01:10.123456'): 123456
1 row in set (0.00 sec)
有意思的是, MySQL的CAST函数在强制转换到DATETIME时会保留到微秒数,不过在插入后同样会截断,示例如下:
mysql> SELECT CAST('2011-02-01 00:01:10.123456' AS DATETIME) D\G;
*************************** 1. row ***************************
D: 2011-02-01 00:01:10.123456
1 row in set (0.00 sec)
mysql> INSERT INTO t
->SELECT CAST('2011-02-01 00:01:10.123456' AS DATETIME);
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM t\G;
*************************** 1. row ***************************
a: 2011-01-01 00:01:10
*************************** 2. row ***************************
a: 2011-02-01 00:01:10
2 rows in set (0.00 sec)
然而从MySQL 5.6.4版本开始,MySQL增加了对秒的小数部分(fractional second)的支持,具体语法为:
type_name(fsp)
其中,type_name的类型可以是TIME、DATETIME和TIMESTAMP。fsp表示支持秒的小数部分的精度,最大为6,表示微秒(microseconds);
默认为0,表示没有小数部分,同时也是为了兼容之前版本中的TIME、DATETIME和TIMESTAMP类型。
对于时间函数,如CURTIME()、SYSDATE()和UTC_TIMESTAMP()也增加了对fsp的支持,例如:
mysql> SELECT CURTIME(4) AS TIME\G;
*************************** 1. row ***************************
TIME: 10:22:37.4456
其可以表达的日期范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。
DATE占用3字节,可显示的日期范围为“1000-01-01”到“9999-12-31”。
在MySQL数据库中,对日期和时间输入格式的要求是非常宽松的,以下的输入都可以视为日期类型。
2011-01-01 00:01:10
2011/01/01 00+01+10
20110101000110
11/01/01 00@01@10
其中,最后一种类型中的“11”有些模棱两可,MySQL数据库将其视为2011还是1911呢?下面来做个测试:
mysql> SELECT CAST('11/01/01 00@01@10' AS DATETIME) AS datetime\G;
*************************** 1. row ***************************
datetime: 2011-01-01 00:01:10
1 row in set (0.00 sec)
可以看到数据库将其视为离现在最近的一个年份。
这种写法11/01/01 00@01@10可能不是一个非常好的习惯。如果没有特别的条件和要求,
还是在输入时按照标准的“YYYY-MM-DD HH:MM:SS”格式来进行。
在MySQL 5.5版本之前(包括5.5版本),数据库的日期类型不能精确到微秒级别,任何的微秒数值都会被数据库截断,例如:
mysql> CREATE TABLE t ( a DATETIME );
Query OK, 0 rows affected (0.25 sec)
mysql> INSERT INTO t SELECT '2011-01-01 00:01:10.123456';
Query OK, 1 row affected (0.05 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM t\G;
*************************** 1. row ***************************
a: 2011-01-01 00:01:10
1 row in set (0.00 sec)
不过MySQL数据库提供了函数MICROSECOND来提取日期中的微秒值,示例如下:
mysql> SELECT MICROSECOND('2011-01-01 00:01:10.123456')\G;
*************************** 1. row ***************************
MICROSECOND('2011-01-01 00:01:10.123456'): 123456
1 row in set (0.00 sec)
有意思的是, MySQL的CAST函数在强制转换到DATETIME时会保留到微秒数,不过在插入后同样会截断,示例如下:
mysql> SELECT CAST('2011-02-01 00:01:10.123456' AS DATETIME) D\G;
*************************** 1. row ***************************
D: 2011-02-01 00:01:10.123456
1 row in set (0.00 sec)
mysql> INSERT INTO t
->SELECT CAST('2011-02-01 00:01:10.123456' AS DATETIME);
Query OK, 1 row affected (0.01 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM t\G;
*************************** 1. row ***************************
a: 2011-01-01 00:01:10
*************************** 2. row ***************************
a: 2011-02-01 00:01:10
2 rows in set (0.00 sec)
然而从MySQL 5.6.4版本开始,MySQL增加了对秒的小数部分(fractional second)的支持,具体语法为:
type_name(fsp)
其中,type_name的类型可以是TIME、DATETIME和TIMESTAMP。fsp表示支持秒的小数部分的精度,最大为6,表示微秒(microseconds);
默认为0,表示没有小数部分,同时也是为了兼容之前版本中的TIME、DATETIME和TIMESTAMP类型。
对于时间函数,如CURTIME()、SYSDATE()和UTC_TIMESTAMP()也增加了对fsp的支持,例如:
mysql> SELECT CURTIME(4) AS TIME\G;
*************************** 1. row ***************************
TIME: 10:22:37.4456
1 rows in set (0.00 sec)
原文链接:点击打开链接
1 0
- MySQL数据类型 DATETIME和 DATE
- Java Date和MySQL datetime数据类型转换
- mysql 数据类型 date 和 datetime 注意
- Java Date和MySQL datetime数据类型转换
- MySQL的Date,DateTime,TimeStamp和Time数据类型
- MySQL中date、year、datetime、timestamp和time数据类型的区别
- DATETIME、DATE和TIMESTAMP类型--MySql数据库
- Mysql date、datetime、timestamp 区别和联系
- hibernate对象映射Date数据类型和input datetime使用注意事项
- mysql datetime,timestamp,date
- mysql Date DateTime TimeStamp
- mysql中DATETIME、DATE 和 TIMESTAMP 类型数据使用
- mysql中DATETIME、DATE 和 TIMESTAMP 类型数据使用
- mysql中DATETIME、DATE和TIMESTAMP的区别
- Mysql 时间类型 DATETIME、DATE和TIMESTAMP类型
- MySQL数据库中的Date,DateTime和TimeStamp类型
- 【转】mysql中DATETIME、DATE和TIMESTAMP的区别
- mysql中DATETIME、DATE 和 TIMESTAMP 类型数据使用
- CodeForces 373(div2)
- 示波器探头使用注意事项,示波器探头的选择
- Xcode的插件cocoapods
- jquery cycle插件的使用,图片幻灯片播放效果
- 观察mysql服务器周期性变化
- MySQL数据类型 DATETIME和 DATE
- extjs 使用TreePanel动态新建一棵数
- Java多线程网络爬虫(时光网为例)
- PHP验证码类,简单安全的PHP验证码
- Android 6.0权限机制基本学习
- ASP.NET关闭当前页(兼容IE、谷歌、火狐等主流浏览器)
- mysql远程登录配置
- 经典SLAM
- 如何实现示波器探头的最佳匹配?