只要您的資料報含的只是日期部分,執行查詢就不會出問題。但是,如果涉及時間部分,情況就有點複雜了。
在討論日期查詢的複雜性之前,我們先來看看最重要的內建日期處理函式。
下面的**列出了 mysql 中最重要的內建日期函式:
函式描述
now()
返回當前的日期和時間
curdate()
返回當前的日期
curtime()
返回當前的時間
date()
提取日期或日期/時間表示式的日期部分
extract()
返回日期/時間的單獨部分
date_add()
向日期新增指定的時間間隔
date_sub()
從日期減去指定的時間間隔
datediff()
返回兩個日期之間的天數
date_format()
用不同的格式顯示日期/時間
下面的**列出了 sql server 中最重要的內建日期函式:
函式描述
getdate()
返回當前的日期和時間
datepart()
返回日期/時間的單獨部分
dateadd()
在日期中新增或減去指定的時間間隔
datediff()
返回兩個日期之間的時間
convert()
用不同的格式顯示日期/時間
mysql使用下列資料型別在資料庫中儲存日期或日期/時間值:
sql server使用下列資料型別在資料庫中儲存日期或日期/時間值:
注釋:當您在資料庫中建立乙個新錶時,需要為列選擇資料型別!
假設我們有如下的 "orders" 表:
orderid
productname
orderdate
1geitost
2008-11-11
2camembert pierrot
2008-11-09
3mozzarella di giovanni
2008-11-11
4mascarpone fabioli
2008-10-29
現在,我們希望從上表中選取 orderdate 為 "2008-11-11" 的記錄。
我們使用下面的 select 語句:
select * from orders where orderdate='2008-11-11'
結果集如下所示:
orderid
productname
orderdate
1geitost
2008-11-11
3mozzarella di giovanni
2008-11-11
現在,假設 "orders" 表如下所示(請注意 "orderdate" 列中的時間部分):
orderid
productname
orderdate
1geitost
2008-11-11 13:23:44
2camembert pierrot
2008-11-09 15:45:21
3mozzarella di giovanni
2008-11-11 11:12:01
4mascarpone fabioli
2008-10-29 14:56:59
如果我們使用和上面一樣的 select 語句:
select那麼我們將得不到結果!因為表中沒有"2008-11-11 00:00:00"日期。如果沒有時間部分,預設時間為 00:00:00。*from
orders
where
orderdate
='2008-11-11'
或select
*from
orders
where
orderdate
='2008-11-11 00:00:00'
SQL高階學習(二)
union 操作符用於合併兩個或多個 select 語句的結果集。請注意,union 內部的每個 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每個 select 語句中的列的順序必須相同。select column name s from table1 union se...
SQL學習(高階二)
1 建立乙個資料庫 create database database name 2 建立資料表 create table table name column name1 datatype constraint name,column name2 datatype constraint name,da...
高階sql學習 with子句!!!
使用with as 語句可以為乙個子查詢語句塊定義乙個名稱,使用這個子查詢名稱可以在查詢語句的很多地方引用這個子查詢。oracle 資料庫像對待內聯檢視或臨時表一樣對待被引用的子查詢名稱,從而起到一定的優化作用。with子句是9i新增語法。你可以在任何乙個頂層的select 語句以及幾乎所有型別的子...