5、数据库存储日期格式时,如何考虑时区转换问题?

本文探讨了数据库存储日期时与时区的关系,特别是在MySQL中使用datetime类型存储时,结合CST、UTC、GMT等概念进行解析。通过示例展示了从数据库中获取时间并转换为Unix时间戳的过程,强调了Unix时间戳与时区无关的特性,并指出对Unix时间戳和时区理解不当可能导致的问题。文章最后给出了从数据库直接获取Unix时间戳的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在编程中遇到了时间与时区相关的问题,整理在这里

我的程序是一个在hadoop上运行的分布式程序,从mysql数据库中取数据,经过处理之后输出

一. 基本概念

时区 :time zone 1884年国际经线会议规定,全球按经度分为24个时区,每区各占经度15°。

以本初子午线为中央经线的时区为零时区,由零时区向东、西各分12区,东、西12区都是半时区,共同使用180°经线的地方时。

CST :China Standard Time UTC+8:00 中国标准时间(北京时间),在东八区

UTC :Universal Time Coordinated,世界协调时间,又称世界标准时间、世界统一时间。UTC 提供了一种与时区无关(或非特定于时区)的时间。

世界上的所有时区都可以表示为 UTC 加上或减去一个偏移量。

因此,UTC是0时区的时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时

GMT :Greenwich Mean Time格林威治标准时间,指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。

Unix timestamp :Unix时间戳,或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,

定义为从格林威治时间(UTC/GMT的午夜)1970年01月01日00时00分00秒起至现在的总秒数。

可以这么说:

UTC和GMT几乎是同一概念,两者的区别是GMT是一个天文上的概念,UTC是基于原子钟。

GMT=UTC

GMT + 8 = UTC + 8 = CST

UTC+时间差=本地时间 (时间差东为正,西为负,东八区记为 +0800)

二. 从数据库取数据的过程
?
mysql>select auction_id,startsfrom auctions where auction_id=88888;
±------------±--------------------+
| auction_id | starts |
±------------±--------------------+
| 88888 | 2011-10-24 20:32:58 |
±------------±--------------------+
1 rowin set (0.00 sec)

mysql> show columnsfrom auctions;
±-------------------------------±--------------±-----±----±--------±------+
| Field | Type |Null | Key| Default | Extra |
±-------------------------------±--------------±-----±----±--------±-----

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值