如题。1 mysql数据库的timestamp为什么从1970到2038的某一时间?2某一时间是指什么时间?3过了这个时间之后怎么办?
走同样的路,发现不同的人生
首先你要理解什麼是時間戳記。時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至某一時間點的總秒數。
例如北京時間2015-12-31 17:00:00的時間戳是1451552400,就是指從北京時間1970-01-01 08:00:00到2015-12-31 17:00:00已經過去了1451552400秒。
網路上有線上的時間戳記轉換工具:http://tool.chinaz.com/Tools/unixtime.aspx
下面一一問你的問題:
1、MySQL資料庫的timestamp為什麼要從1970到2038的某個時間? MySQL的timestamp類型是4個位元組,最大值是2的31次方減1,也就是2147483647,轉換成北京時間就是2038-01-19 11:14:07。可以使用上面的在線的時間戳轉換工具得出。
2、某一時間是指什麼時間? 如上,北京時間是2038-01-19 11:14:07。
3、過了這個時間之後怎麼辦? 1) 使用datetime;2) 等過了再說。
最後補充一顆彩蛋:北京時間2038-01-19 11:14:07,如果某些系統還在使用MySQL的Timestamp,或是系統使用的程式語言用4位元組補碼整型(例如Java的int)來表示時間戳的,這些系統都會跪掉,說不定會搞出點什麼大新聞(例如飛機航班系統掛掉、銀行某系統跪掉),好吧,我亂猜的,等著那一天吧。
因為 32 位元整數只能表示這麼長的毫秒數
1 因為這是unix時間戳(32位有符號int, 1970年起的秒數)能表示的範圍2 1970年+ (13 不知道, 能過去再說, 建議那段時間不要用大眾運輸...
首先你要理解什麼是時間戳記。時間戳是指格林威治時間1970年01月01日00時00分00秒(北京時間1970年01月01日08時00分00秒)起至某一時間點的總秒數。
例如北京時間2015-12-31 17:00:00的時間戳是1451552400,就是指從北京時間1970-01-01 08:00:00到2015-12-31 17:00:00已經過去了1451552400秒。
網路上有線上的時間戳記轉換工具:http://tool.chinaz.com/Tools/unixtime.aspx
下面一一問你的問題:
1、MySQL資料庫的timestamp為什麼要從1970到2038的某個時間?
MySQL的timestamp類型是4個位元組,最大值是2的31次方減1,也就是2147483647,轉換成北京時間就是2038-01-19 11:14:07。可以使用上面的在線的時間戳轉換工具得出。
2、某一時間是指什麼時間?
如上,北京時間是2038-01-19 11:14:07。
3、過了這個時間之後怎麼辦?
1) 使用datetime;
2) 等過了再說。
最後補充一顆彩蛋:北京時間2038-01-19 11:14:07,如果某些系統還在使用MySQL的Timestamp,或是系統使用的程式語言用4位元組補碼整型(例如Java的int)來表示時間戳的,這些系統都會跪掉,說不定會搞出點什麼大新聞(例如飛機航班系統掛掉、銀行某系統跪掉),好吧,我亂猜的,等著那一天吧。
因為 32 位元整數只能表示這麼長的毫秒數
1 因為這是unix時間戳(32位有符號int, 1970年起的秒數)能表示的範圍
2 1970年+ (13 不知道, 能過去再說, 建議那段時間不要用大眾運輸...