只要您的資料報含的只是日期部分,執行查詢就不會出問題。但是,如果涉及時間部分,情況就有點複雜了。
在討論日期查詢的複雜性之前,我們先來看看最重要的內建日期處理函式。
下面的**列出了 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教程重溫(8)
default 約束用於向列中插入預設值。如果沒有規定其他的值,那麼會將預設值新增到所有的新記錄。下面的 sql 在 persons 表建立時在 city 列上建立 default 約束 my sql sql server oracle ms access create table persons ...
SQL教程重溫(9)
auto increment 會在新記錄插入表中時生成乙個唯一的數字。我們通常希望在每次插入新記錄時,自動地建立主鍵欄位的值。我們可以在表中建立乙個 auto increment 字段。下面的 sql 語句把 persons 表中的 id 列定義為 auto increment 主鍵字段 creat...
重溫選擇排序法1 0版
package com.limo 03 需求 實現選擇排序 預設從小到大 思想 在每一趟中,將當前最小索引處元素與其之後的所有元素進行比較,如果後者更小就交換,後者就代替前者繼續與後面的 元素進行比較,遇到更小的就交換。一趟下來,該趟中最小的元素就按照次序出現在了前面。當只剩下乙個數時整個陣列就變得...