2016-09-17 71 views
1

我需要將數據庫從SQL轉換爲MySQL併成功完成,但是,現在這個問題更多地針對MySQL。TIMESTAMP與DATETIME MySQL

我注意到,我能夠插入DateTime串入Timestamp列類型,而這一切優秀和良好,從我聽到的時間戳接受任何日期時間或實際時間戳,但是,我很好奇的"ON UPDATE CURRENT_TIMESTAMP"現在我已經在數據庫的一列上,因爲它只能用於Timestamp類型。這會使用時間戳,它的格式不是:YYYY-MM-DD HH:MM:SS根據CURRENT_TIMESTAMP進行更新時?

這會如何影響我完全從該列中提取的數據?

例如,如果某些日期可能是數字時間戳,而其他日期可能是DATETIME格式,是否很難從TIMESTAMP列獲取當前日期/時間?我是否應該使用DATETIME作爲此列的類型而不具有ON_UPDATE的能力以避免來自數據庫的混合數據出現問題?

回答

2

內部全部TIMESTAMP數據存儲爲4個字節的整數,表示從Unix epoch開始的秒數。您在軟件中看到的內容取決於您的軟件如何顯示此數據。例如,如果您將時區更改爲不同的時區,它將對從TIMESTAMP列讀取的數據產生影響(使用Unix紀元是UTC)

將不會混合數據。 MySQL會負責將您的YYYY-MM-DD HH:MM:SS轉換爲時間戳。儘管對時區有所警惕!

當查詢TIMESTAMP列時,MySQL將默認將它們格式化爲人類可讀形式,所以不要期望從這些列中獲取整數。您將得到一個格式爲YYYY-MM-DD HH:MM:SS的字符串,就像DATETIME字段一樣。

+0

好吧,現在我將某些列更改爲TIMESTAMP,但Mysql仍然以格式顯示它們爲字符串:'YYYY-MM-DD HH:MM:SS',因此沒有任何轉換。 –

+0

它已被轉換。相信我:)這只是你的客戶以人性化的格式顯示這一點。 – Mchl

+0

使用phpMyAdmin,它將它們顯示爲'YYYY-MM-DD HH:MM:SS'字符串。另外,什麼是通過PHP從數據庫中獲取這些數據的最佳方式,我是否仍然需要使用'strtotime'函數轉換爲時間? –