SQL教程重溫(10)

2021-07-28 10:56:56 字數 2045 閱讀 3361

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

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

下面的**列出了 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教程重溫(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 需求 實現選擇排序 預設從小到大 思想 在每一趟中,將當前最小索引處元素與其之後的所有元素進行比較,如果後者更小就交換,後者就代替前者繼續與後面的 元素進行比較,遇到更小的就交換。一趟下來,該趟中最小的元素就按照次序出現在了前面。當只剩下乙個數時整個陣列就變得...