mysql中datetime_MySQLdatetime类型
在本教程中,您将了解MySQL DATETIME数据类型以及如何使⽤⼀些⽅便的函数来有效地操作DATETIME类型数据。
MySQL DATETIME数据类型简介
MySQL DATETIME存储包含⽇期和时间的值。 当您从DATETIME列查询数据时,MySQL会以以下格式显⽰DATETIME值:
YYYY-MM-DD HH:MM:SS
默认情况下,DATETIME的值范围为1000-01-01 00:00:00⾄9999-12-31 23:59:59。
DATETIME值使⽤5个字节进⾏存储。另外,DATETIME值可以包括格式为YYYY-MM-DD HH:MM:SS [.fraction]例如:2017-12-20 10:01:00.999999的尾数有⼩数秒。 当包含⼩数秒精度时,DATETIME值需要更多存储,如下表所⽰:
分数秒精度
存储(字节)
1,2
1
3,4
2
5,6
3
例如,2017-12-20 10:01:00.999999需要8个字节,2015-12-20 10:01:00需要5个字节,3个字节为.999999,⽽2017-12-20 10:01:00.9只需要6个字节,⼩数秒精度为1字节。
请注意,在MySQL 5.6.4之前,DATETIME值需要8字节存储⽽不是5个字节。
MySQL DATETIME与TIMESTAMP类型
MySQL提供了另⼀种类似于DATETIME,叫作TIMESTAMP的时间数据类型。
TIMESTAMP需要4个字节,⽽DATETIME需要5个字节。 TIMESTAMP和DATETIME都需要额外的字节,⽤于分数秒精度。
TIMESTAMP值范围从1970-01-01 00:00:01 UTC到2038-01-19 03:14:07 UTC。 如果要存储超过2038的时间值,则应使⽤DATETIME⽽不是TIMESTAMP。
MySQL将TIMESTAMP存储在UTC(有时区)值中。 但是,MySQL存储DATETIME值是没有时区的。下⾯来看看看下⾯的例⼦。
⾸先,将当前连接的时区设置为+00:00。
接下来,创建⼀个名为timestamp_n_datetime的表,它由两列组成:ts和dt,这两列分别使⽤TIMESTAMP和DATETIME类型,如以下语句 -
USE testdb;
CREATE TABLE timestamp_n_datetime (
id INT AUTO_INCREMENT PRIMARY KEY,乌克兰victoryday孕妇
ts TIMESTAMP,
dt DATETIME
);
然后,将当前⽇期和时间插⼊到timestamp_n_datetime表的ts和dt列中,如下语句所⽰ -
INSERT INTO timestamp_n_datetime(ts,dt)
VALUES(NOW(),NOW());
石家庄轨迹之后,从timestamp_n_datetime表查询数据,如下语句所⽰ -
SELECT
ts,
dt
FROM
timestamp_n_datetime;
执⾏上⾯查询语句,得到以下结果 -
+---------------------+---------------------+
| ts | dt |
+---------------------+---------------------+
| 2017-07-26 00:38:14 | 2017-07-26 00:38:14 |
字符指针可以用gets吗+---------------------+---------------------+
1 row in set
DATETIME和TIMESTAMP列中的两个值相同。
最后,将连接的时区设置为+03:00,再次从timestamp_n_datetime表查询数据。
SET time_zone = '+03:00';
SELECT
ts,
dt
FROM
timestamp_n_datetime;
执⾏上⾯查询语句,得到以下结果 -
+---------------------+---------------------+
| ts | dt |
+---------------------+---------------------+
| 2017-07-25 19:38:14 | 2017-07-26 00:38:14 |
+---------------------+---------------------+
1 row in set
可以看到,ts列为TIMESTAMP数据类型的值变了。这是因为在更改时区时,TIMESTAMP列以UTC为单位存储⽇期和时间值,根据新时区调整TIMESTAMP列的值。
这意味着如果使⽤TIMESTAMP数据来存储⽇期和时间值,则在将数据库移动到位于不同时区的服务器时时间的值可能不⼀样,所以应该认真考虑这个问题。
MySQL DATETIME函数
mysql语句分类以下语句使⽤NOW()函数将变量
SET @dt = NOW();
要查询SELECT语句:
SELECT @dt;
执⾏上⾯查询语句,得到以下结果 -
mysql> SELECT @dt;
+---------------------+
| @dt |
+---------------------+
| 2017-07-25 19:41:14 |
+---------------------+
1 row in set
MySQL DATE函数
要从DATETIME值提取⽇期部分,请使⽤DATE函数,如下所⽰:
mysql> SELECT DATE(@dt);
+------------+
| DATE(@dt) |
+------------+
| 2017-07-25 |
+------------+
1 row in set
如果希望根据⽇期查询数据,但是列中存储的数据是基于⽇期和时间,则此功能⾮常有⽤。
下⾯来看看看下⾯的例⼦。
USE testdb;
CREATE TABLE test_dt (
id INT AUTO_INCREMENT PRIMARY KEY,
created_at DATETIME
);为什么安卓不用c语言开发
INSERT INTO test_dt(created_at)
VALUES('2017-11-05 20:29:36');
假设您想知道在2017-11-05当天创建的⾏,请使⽤以下查询:
SELECT
*
FROM
test_dt
WHERE
created_at = '2017-11-05';
执⾏上⾯查询语句,得到以下结果 -
mysql> SELECT
*
FROM
test_dt
WHERE
created_at = '2017-11-05';
Empty set
它不返回任何⾏记录。
这是因为created_at列不仅包含⽇期,还包含时间。要纠正它,请使⽤DATE函数,如下所⽰:SELECT
*
FROM
test_dt
WHERE
DATE(created_at) = '2017-11-05';
执⾏上⾯查询语句,得到以下结果 -
+----+---------------------+
| id | created_at |
+----+---------------------+
| 1 | 2017-11-05 20:29:36 |
+----+---------------------+
1 row in set
它按预期返回⼀⾏。 如果表有多⾏,MySQL必须执⾏全表扫描以查与条件匹配的⾏。MySQL TIME函数
要从DATETIME值中提取时间部分,可以使⽤TIME函数,如以下语句所⽰:
SELECT TIME(@dt);
执⾏上⾯查询语句,得到以下结果 -
mysql> SELECT TIME(@dt);
+-----------+
| TIME(@dt) |
+-----------+
| 19:41:14 |
+-----------+
1 row in set
js是什么意思服务MySQL YEAR, QUARTER, MONTH, WEEK, DAY, HOUR,MINUTE和SECOND函数
要从DATETIME值获取年,季,⽉,周,⽇,⼩时,分和秒,可以使⽤以下语句中所⽰的函数:
SET @dt = NOW();
SELECT
HOUR(@dt),
MINUTE(@dt),
SECOND(@dt),
DAY(@dt),
WEEK(@dt),
MONTH(@dt),
QUARTER(@dt),
YEAR(@dt);
执⾏上⾯查询语句,得到以下结果 -
+-----------+-------------+-------------+----------+-----------+------------+--------------+-----------+
| HOUR(@dt) | MINUTE(@dt) | SECOND(@dt) | DAY(@dt) | WEEK(@dt) | MONTH(@dt) | QUARTER(@dt) | YEAR(@dt) |
+-----------+-------------+-------------+----------+-----------+------------+--------------+-----------+
| 19 | 42 | 56 | 25 | 30 | 7 | 3 | 2017 |
+-----------+-------------+-------------+----------+-----------+------------+--------------+-----------+
1 row in set
MySQL DATE_FORMAT函数
要格式化DATETIME值,可以使⽤DATE_FORMAT函数。 例如,以下语句基于%H:%i:%s - %W%M%Y格式来格式化DATETIME值:SET @dt = NOW();
SELECT DATE_FORMAT(@dt, '%H:%i:%s - %W %M %Y');
执⾏上⾯查询语句,得到以下结果 -
+-----------------------------------------+
| DATE_FORMAT(@dt, '%H:%i:%s - %W %M %Y') |
+-----------------------------------------+
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论