首頁  >  文章  >  資料庫  >  日期及時間處理函數及數值處理函數實例(資料處理函數的使用二)

日期及時間處理函數及數值處理函數實例(資料處理函數的使用二)

巴扎黑
巴扎黑原創
2017-05-05 17:06:411463瀏覽

日期和時間處理函數

日期和時間才用相應的資料類型和特殊的格式存儲,以便能快速和有效地排序或過濾,並且節省物理存儲空間。

一般,應用程式不使用用來儲存日期和時間的格式,因此日期和時間函數總是被用來讀取、和處理這些值。由於這個原因,日期和時間函數在MySQL語言中扮演著重要的角色。

下表列出了某些常用的日期和時間處理函數:

日期及時間處理函數及數值處理函數實例(資料處理函數的使用二)

#這是重新複習有where進行資料過濾的一個好時機。到目前為止,我們都是用比較數值和文字的where子句過濾數據,但數據經常需要用日期進行過濾。用日期進行過濾需要注意一些別的問題和使用特殊的MySQL函數。

首先要注意的是MySQL使用的日期格式。無論你何時指定一個日期,不管是插入或更新表值還是用where子句進行過濾,日期必須為格式yyyy-mm-dd。因此,2005年9月1日,給出為2005-09-01.雖然其他的日期格式可能也行,但這是首選的日期格式,因為它排除了多義性(如,04/05/06是2006年5月4日或2006年4月5日或2004年5月6日或...)。

應該總是使用4位數的年份,支援2位數的年份,MySQL處理00-69為2000-2069,處理70-99為1970-1999。雖然它們可能是打算要的年份,但使用完整的4為數位年份更可靠,因為MySQL不必做出任何假設。

因此,基本的日期比較應該很簡單:

輸入:

select cust_id,order_num from orders where order_date = '2005-09-01';

輸出:

日期及時間處理函數及數值處理函數實例(資料處理函數的使用二)

分析:此select語句正常運作。它檢索出一個訂單記錄,該訂單記錄的order_date為2005-09-01。

但是,使用 where order_date = '2005-09-01'可靠嗎? order_date的資料類型為datetime。這種類型儲存日期及時間值。範例表中的數值全都具有時間值00:00:00,但實際中很肯能並不總是這樣。如果用目前日期和時間儲存訂單日期,怎麼辦?例如,儲存的 order_date值為2005-09-01 11:30:05,則where order_date = '2005-09-01'失敗。即使給出具有該日期的一行,也不會把它檢索出來,因為where匹配失敗。

解決方法是指示MySQL僅將給出的日期與列中的日期部分進行比較,而不是將給出的日期與整個列值進行比較。為此,必須使用date()函數。 Date(order_date)指示MySQL只提取列的日期部分,更可靠的select語句為:

#輸入:

select cust_id,order_num from orders where Date(order_date) = '2005-09-01';

如果你想要的只是日期,那麼使用Date()是一個良好的習慣,,即使你知道相應的列只包含日期。這樣,如果因為某些原因表中以後有日期和時間值,你的SQL程式碼也不用改變。當然,也存在一個Time()函數,當你只想要時間時,應該使用它。

Date()和Time()都是在MySQL4.1.1中第一次引入的。

在你知道如何用日期進行相等測試後,其他運算元的使用也就很清楚了。

不過,還有一種日期比較需要說明。如果你想檢索出2005年9月下的所有訂單,怎麼辦?簡單的相等測試不行,因為它也要符合月份中的天數。有幾個解決辦法,其中一個如下所示:

輸入:

select cust_id,order_num from orders where Date(order_date) between '2005-09-01' and  '2005-09-30';

輸出:

日期及時間處理函數及數值處理函數實例(資料處理函數的使用二)

##分析:其中,between操作符用來把2005-09-01和2005-09-30定義為一個要符合的日期範圍。


數值處理函數

#數值處理函數只處理數值資料。這些函數一般主要用於代數、三角或幾何運算,因此沒有字串或日期-時間處理函數所使用的那麼頻繁。

諷刺的是,在主要DBMS的函數中,數值函數是最一直以來最統一的函數。下表列出一些常用的數值處理函數:

日期及時間處理函數及數值處理函數實例(資料處理函數的使用二)#

以上是日期及時間處理函數及數值處理函數實例(資料處理函數的使用二)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn