随笔而记,重在总结,希望对你有帮助
某个时刻的时间如何表示:1,时间戳(全世界同一时刻时间戳是一样的);
2,指定时区的年月日时分秒
服务器时区:应用服务获取当前时间时,如果不指定时区,默认的是当前服务器时区的时间。
mysql时区:获取mysql时间或者使用mysql时间相关函数时,使用的是mysql默认时区。
jdbc时区:指定连接数据库时,当前数据库连接的默认时区。
谈完概念,说下面说时区的问题
当服务器时区、mysql时区、jdbc时区一致时,不会出现时间问题。
当三者不一致时,获取当前时间,建议只在应用服务内获取当前时间。假如要插入一条数据,先获取服务器时区的时间,插入或更新数据时,jdbc将服务器时区的时间转为jdbc时区的时间,入库时不受mysql时区的影响,mysql时区影响范围在数据库中获取时间,或者使用时间相关的函数,如unix_timestamp,将当前时间转为时间戳,如果jdbc指定的时区与mysql时区不一致,转换的时间戳就会出现问题。当从mysql读取数据时,由于存储的是jdbc时区对应的时间,所以在应用服务中就需要将查询出的时间从jdbc时区转为服务器时区的时间。