1)java中的时间对象 2)mysql中的时间对象 3)mysql中的时间数据类型的计算。

java中的时间对象

java.util.Date;
System.currentTimeMillis();
java.util.Calendar;

java.text.SimpleDateFormat;

Java中获取指定日为星期几及其他日期操作

mysql中的时间数据类型

DATE
Time
Datetime
Timestamp
year

timestamp vs datetime

TIMESTAMP值范围从1970-01-01 00:00:01 UTC2038-01-19 03:14:07 UTC。 如果要存储超过2038的时间值,则应使用DATETIME而不是TIMESTAMP。

默认情况下,DATETIME的值范围为1000-01-01 00:00:009999-12-31 23:59:59

MySQL将TIMESTAMP存储在UTC(有时区)值中。 但是,MySQL存储DATETIME值是没有时区的。
也就是说,datetime插入的时候是什么值,不管放在哪个时区,最初插入的值都不会改变。
但是,对于timestamp 插入的值,会跟着时区改变的。

举例子:

CREATE TABLE timestamp_n_datetime (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ts TIMESTAMP,
    dt DATETIME
);
SET time_zone='+08:00'; 
INSERT INTO timestamp_n_datetime(ts,dt)
VALUES(NOW(),NOW());

SELECT ts,dt FROM timestamp_n_datetime;

ts dt
2018-10-30 23:03:43 2018-10-30 23:03:43
SET time_zone='+03:00'; 

SELECT ts,dt FROM timestamp_n_datetime;

ts dt
2018-10-30 18:03:43 2018-10-30 23:03:43

timestamp数据类型的数据查询出来,改变了。

注意
https://dev.mysql.com/doc/refman/5.6/en/time-zone-support.html

1.默认使用当地时区的
2.改变时区SET time_zone='+03:00'; 仅在当前连接有效的。

set time_zone="+06:00";
仅在一个session中有效。

会受到影响的有:
now()
curtime()

timestamp数据类型的数据

不会受到影响的有:
utc_timestamp()
date,time,datetime数据类型的数据。



timestamp列以utc为单位存储日期和时间值
TIMESTAMP列以UTC为单位存储日期和时间值,根据新时区调整TIMESTAMP列的值。

这意味着如果使用TIMESTAMP数据来存储日期和时间值,则在将数据库移动到位于不同时区的服务器时时间的值可能不一样,所以应该认真考虑这个问题。

mysql时间类型数据计算

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容