2010-02-01 24 views
10

後,我已經看到了很多在這裏使用DATE_SUB()DATE_ADD()功能,而不是算術運算符+-,我想知道是否有任何區別問題:從MySQL-manualDATE_SUB()和使用算術運算符進行日期時間計算有什麼區別嗎?

報價:

日期運算也可以使用INTERVAL和+或 - 運算符:

date + INTERVAL expr unit 
date - INTERVAL expr unit 

所以基本上,這兩個語句返回相同的結果:

SELECT DATE_ADD(NOW(), INTERVAL 7 DAY); 

SELECT NOW() + INTERVAL 7 DAY; 

現在我的問題:

DATE_SUB()之間的差異,並使用在-操作MySQL的?(除了可讀性?)

回答

4

DATE_ADD的MySQL文檔(http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-add)明確聲明您可以執行使用+和 - 運算符進行最新的算術運算。

日期+ INTERVAL EXPR單元

日期 - INTERVAL EXPR單元

:操作員 -

日期算術也可以一起使用INTERVAL與+或進行鑑於它得到了文檔的認可,我認爲任何區別都是文體上的。我個人認爲+/-更容易閱讀(畢竟,您不使用INT_ADD(...)或DOUBLE_ADD(...)來操作數字值,所以爲什麼要使用日期?)。其他人可能有喜歡DATE_ADD和DATE_SUB的自己的理由,也沒關係。只需選擇一些東西並堅持下去。

Jemiah

3

對我而言,這是一個經驗問題。處理了多個操作數據庫的編輯器,庫和工具之後,我學會了不信任「+」和「 - 」運算符,就像我信任DATE_SUB()一樣。與使用DATE_SUB()進行下一次軟件升級時相比,使用DATE_SUB()進行下一次軟件升級時,意外中斷的可能性要小得多+/-

+2

請問您能澄清一點嗎?在這種情況下編輯會打破sql語法嗎? – 2010-02-01 19:07:09

+0

例如,解析器被破壞 - SQL編輯器接受無效SQL爲有效,或指示有效SQL無效並拒絕接受它。 – blueberryfields 2010-12-28 06:08:01