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时间类型数据计算

你可能感兴趣的:(1)java中的时间对象 2)mysql中的时间对象 3)mysql中的时间数据类型的计算。)