SQL高階學習(六)Date函式

2021-08-20 01:15:33 字數 2043 閱讀 2574

只要您的資料報含的只是日期部分,執行查詢就不會出問題。但是,如果涉及時間部分,情況就有點複雜了。

在討論日期查詢的複雜性之前,我們先來看看最重要的內建日期處理函式。

下面的**列出了 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 

*from

orders

where

orderdate

='2008-11-11'

或select

*from

orders

where

orderdate

='2008-11-11 00:00:00'

那麼我們將得不到結果!因為表中沒有"2008-11-11 00:00:00"日期。如果沒有時間部分,預設時間為 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 語句以及幾乎所有型別的子...