使用 MySQL Date/Time 類型
更新時間:2008年03月26日 21:27:31 作者:
上次對于 MySQL 方面已經(jīng)有的一些總結(jié),但是昨晚 wiLdGoose 兄說他也碰到同樣的問題,但是無法解決。結(jié)果經(jīng)過種種的假設(shè)和判斷以后,到最后發(fā)現(xiàn)原來是 Zend Studio 的時區(qū)配置問題(我狂汗ing)。而在和他討論期間也談到了很多關(guān)于 MySQL 的細(xì)節(jié)問題,還是記錄一下當(dāng)作備忘比較好。這篇文章同時也做說服 wiLdGoose 兄用。
由于曾經(jīng)和他是同一個團(tuán)隊的,所以對于其我很熟悉他那“潔癖”的做法,對于他的很多的觀點我也非常的贊同;但是有一件非常不理解的地方就是設(shè)計數(shù)據(jù)庫的時候總是會回避使用 Date/Time 類型。他的做法是將時間相關(guān)的字段設(shè)置為 INT(10) 類型,然后用 UNIX 時間戳來存儲。而我本人對于這點做法非常的不贊同:
首先,是類型操作的不同,類似于 wiLdGoose 這樣做法的“時間計算”實質(zhì)上是整形之間的操作(而且這個整形非常大,長度為 10)。更有甚者,將時間戳設(shè)置為 VARCHAR(10) ,由此引發(fā)的效率問題不言而喻。
至于時間計算和整形計算乃至字符串的計算的效率問題,這篇文章非常能說明問題。
其次,是邏輯方面的操作問題。這是使用時間類型的優(yōu)勢,尤其是在需要高精度的項目上。比如需要“前一個星期的數(shù)據(jù)”和“獲得從數(shù)據(jù)庫建立以來每個星期一的數(shù)據(jù)”,這樣的操作如用 wiLdGoose 兄的做法復(fù)雜度可想而知。
最后,就是直觀不直觀的問題,可以理解的是我們的大腦是不會直接將這一大串的時間戳轉(zhuǎn)換成日期格式的。相比而言,直接使用時間類型明顯就直觀得多(它本身就是時間格式)。
而我目前的團(tuán)隊也還是在使用類似的方法。本人對于類似技術(shù)細(xì)節(jié)也爭執(zhí)了良久,但由于崗位和決定權(quán)的問題,團(tuán)隊還是無法采納本人的意見,甚為遺憾。
MySQL 定位為簡單快速的 DBM 自然能迅速的駕馭,但是另一方面很容易造成不會深入下去的局面。對于此,我們更應(yīng)該注意每一項的數(shù)據(jù)庫設(shè)計細(xì)節(jié),一項產(chǎn)品不斷添加新的功能到最后都是面向應(yīng)用的。
最后,附 MySQL 官方的時間和日期函數(shù)的手冊。
首先,是類型操作的不同,類似于 wiLdGoose 這樣做法的“時間計算”實質(zhì)上是整形之間的操作(而且這個整形非常大,長度為 10)。更有甚者,將時間戳設(shè)置為 VARCHAR(10) ,由此引發(fā)的效率問題不言而喻。
至于時間計算和整形計算乃至字符串的計算的效率問題,這篇文章非常能說明問題。
其次,是邏輯方面的操作問題。這是使用時間類型的優(yōu)勢,尤其是在需要高精度的項目上。比如需要“前一個星期的數(shù)據(jù)”和“獲得從數(shù)據(jù)庫建立以來每個星期一的數(shù)據(jù)”,這樣的操作如用 wiLdGoose 兄的做法復(fù)雜度可想而知。
最后,就是直觀不直觀的問題,可以理解的是我們的大腦是不會直接將這一大串的時間戳轉(zhuǎn)換成日期格式的。相比而言,直接使用時間類型明顯就直觀得多(它本身就是時間格式)。
而我目前的團(tuán)隊也還是在使用類似的方法。本人對于類似技術(shù)細(xì)節(jié)也爭執(zhí)了良久,但由于崗位和決定權(quán)的問題,團(tuán)隊還是無法采納本人的意見,甚為遺憾。
MySQL 定位為簡單快速的 DBM 自然能迅速的駕馭,但是另一方面很容易造成不會深入下去的局面。對于此,我們更應(yīng)該注意每一項的數(shù)據(jù)庫設(shè)計細(xì)節(jié),一項產(chǎn)品不斷添加新的功能到最后都是面向應(yīng)用的。
最后,附 MySQL 官方的時間和日期函數(shù)的手冊。
您可能感興趣的文章:
- sql server中datetime字段去除時間的語句
- sql語句中如何將datetime格式的日期轉(zhuǎn)換為yy-mm-dd格式
- sql server中datetime字段去除時間代碼收藏
- sqlserver和oracle中對datetime進(jìn)行條件查詢的一點區(qū)別小結(jié)
- SQLSERVER 中datetime 和 smalldatetime類型分析說明
- mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函數(shù)
- MySQL時間字段究竟使用INT還是DateTime的說明
- Sql中將datetime轉(zhuǎn)換成字符串的方法(CONVERT)
- MySql用DATE_FORMAT截取DateTime字段的日期值
- SqlDateTime溢出該怎么解決
相關(guān)文章
PHP基于閉包思想實現(xiàn)的BT(torrent)文件解析工具實例詳解
這篇文章主要介紹了PHP基于閉包思想實現(xiàn)的BT(torrent)文件解析工具,結(jié)合具體實例形式分析了php針對torrent文件的讀取與解析相關(guān)操作技巧,需要的朋友可以參考下2017-08-08php基于登陸時間判斷實現(xiàn)一天多次登錄只積分一次功能示例
這篇文章主要介紹了php基于登陸時間判斷實現(xiàn)一天多次登錄只積分一次功能,適合會員系統(tǒng)的積分功能,涉及php時間判斷與數(shù)據(jù)庫相關(guān)操作技巧,需要的朋友可以參考下2017-10-10PHP獲取數(shù)組中某元素的位置及array_keys函數(shù)應(yīng)用
獲取數(shù)組中一元素的位置有很多方法,其中PHP自身就已經(jīng)內(nèi)置了一個函數(shù)array_keys(),下邊的代碼能夠打印出所有PHP的內(nèi)置函數(shù),感興趣的朋友可以了解下同時學(xué)習(xí)一下函數(shù)array_keys()的使用方法,就當(dāng)鞏固知識量啦2013-01-01PHP中調(diào)試函數(shù)debug_backtrace的使用示例代碼
debug_backtrace() 是一個很低調(diào)的函數(shù),很少有人注意過它,這篇文章主要給大家介紹了關(guān)于PHP中調(diào)試函數(shù)debug_backtrace的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,感興趣的朋友們隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09PHP新手用的Insert和Update語句構(gòu)造類
PHP新手用的Insert和Update語句構(gòu)造類,沒多大功能,學(xué)習(xí)php的朋友可以參考下2012-03-03