⑴ sql里有datetime欄位的數據怎麼比較
datediff(day,firstdate,seconddate)
DateDiff DateDiff: SQL server函數
返回 Variant (Long) 的值,表示兩個指定日期間的時間間隔數目。
語法
DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
DateDiff 函數語法中有下列命名參數:
部分 描述
interval 必要。字元串表達式,表示用來計算date1 和 date2 的時間差的時間間隔
Date1□date2 必要;Variant (Date)。計算中要用到的兩個日期。
Firstdayofweek 可選。指定一個星期的第一天的常數。如果未予指定,則以星期日為第一天。
firstweekofyear 可選。指定一年的第一周的常數。如果未予指定,則以包含 1 月 1 日的星期為第一周。
設置
interval 參數的設定值如下:
設置 描述
yyyy 年
q 季
m 月
y 一年的日數
d 日
w 一周的日數
ww 周
h 時
n 分鍾
s 秒
firstdayofweek 參數的設定值如下:
常數 值 描述
vbUseSystem 0 使用 NLS API 設置。
vbSunday 1 星期日(預設值)
vbMonday 2 星期一
vbTuesday 3 星期二
vbWednesday 4 星期三
vbThursday 5 星期四
vbFriday 6 星期五
vbSaturday 7 星期六
常數 值 描述
vbUseSystem 0 用 NLS API 設置。
vbFirstJan1 1 從包含 1 月 1 日的星期開始(預設值)。
vbFirstFourDays 2 從第一個其大半個星期在新的一年的一周開始。
vbFirstFullWeek 3 從第一個無跨年度的星期開始。
說明
DateDiff 函數可用來決定兩個日期之間所指定的時間間隔數目。例如,可以使用 DateDiff 來計算兩個日期之間相隔幾日,或計算從今天起到年底還有多少個星期。
為了計算 date1 與 date2 相差的日數,可以使用「一年的日數」(y) 或「日」(d)。當 interval 是「一周的日數」(w) 時,DateDiff 返回兩日期間的周數。如果 date1 是星期一,DateDiff 計算到 date2 為止的星期一的個數。這個數包含 date2 但不包含 date1。不過,如果 interval 是「周」(ww),則 DateDiff 函數返回兩日期間的「日歷周」數。由計算 date1 與 date2 之間星期日的個數而得。如果 date2 剛好是星期日,則 date2 也會被加進 DateDiff 的計數結果中;但不論 date1 是否為星期日,都不將它算進去。
如果 date1 比 date2 來得晚,則 DateDiff 函數的返回值為負數。
firstdayofweek 參數會影響使用時間間隔符號 「W」 或 「WW」 計算的結果。
如果 date1 或 date2 是日期文字,則指定的年份成為該日期的固定部分。但是,如果 date1 或 date2 用雙引號 (" ") 括起來,且年份略而不提,則在每次計算表達式 date1 或 date2 時,當前年份都會插入到代碼之中。這樣就可以書寫適用於不同年份的程序代碼。
在計算 12 月 31 日和來年的 1 月 1 日的年份差時,DateDiff 返回 1 表示相差一個年份,雖然實際上只相差一天而已。
示例
此示例確定在 pubs 資料庫中標題發布日期和當前日期間的天數。
USE pubsGOSELECT DATEDIFF(day, pubdate, getdate()) AS no_of_daysFROM titlesGO
DATEDIFF函數在Access和MSSQL中的使用區別
ACCESS中用法:DATEDIFF('day', pubdate, Now())
MSSQL中用法:DATEDIFF(day, pubdate, getdate())
⑵ sql 數據查詢比較,『不等於』,為什麼建議使用<> 而不是用!= 這有什麼實質性的區別
!=
測試某個表達式是否不等於另一個表達式(比較運算符)。如果任何一個操作數為 NULL,或兩個都為 NULL,則返回 NULL。其功能與 <>(不等於)比較運算符相同。
<>
比較兩個表達式(比較運算符)。當比較非空表達式時,如果左操作數不等於右操作數,則結果為 TRUE;否則結果為 FALSE。如果任何一個操作數為 NULL 或兩個都為 NULL,
⑶ 資料庫中 什麼是表達式 VFP提供了哪幾種類型的表達式
在Visual FoxPro系統中,表達式是由常量、變數、函數及其他數據容器單獨或與運算符組成的有意義的運算式。表達式分為5種類型:
1. 算術表達式
算術表達式又稱數值表達式,其運算對象和運算結果均為數值型數據。
2. 字元表達式
字元表達式是由字元運算符將字元型數據對象連接起來進行運算的式子。其運算對象是字元型數據對象,運算結果是字元常量或邏輯常量。
3. 日期表達式
由日期運算符將一個日期型或日期時間型數據與一個數值型數據連接而成的運算式稱為日期表達式。日期運算符分為「+」和「-」兩種,其作用分別是在日期數據上增加或減少一個天數,在日期時間數據上增加或減少一個秒數。若兩個日期型數據相減,結果為兩日期間的天數差值,兩個日期時間型數據相減,結果為二者之間相差的秒數。
4. 關系表達式
由關系運算符連接兩個同類數據對象進行關系比較的運算式稱為關系表達式。關系表達式的值為邏輯值,關系表達式成立則其值為「真」,否則為「假」。
5. 邏輯表達式
由邏輯運算符將邏輯型數據對象連接而成的式子稱為邏輯表達式。關系表達式的運算對象與運算結果均為邏輯型數據。
⑷ 關系資料庫關系代數表達式怎麼寫
一、關系代數的9種操作:
關系代數中包括了:並、交、差、乘、選擇、投影、聯接、除、自然聯接等操作。
五個基本操作:
並(∪)、差(-)、笛卡爾積(×)、投影(σ)、選擇(π)
四個組合操作:
交(∩)、聯接(等值聯接)、自然聯接(R S)、除法(÷)
注2:等值連接表示先做笛卡爾積(×)之後,對相應列進行選擇或等值關聯後的結果(僅篩選行、不篩選列)
注2:自然連接表示兩個關系中若有相同名稱的屬性,則自動作為關聯條件,且僅列出一列
二、關系代數表達式:
由關系代數運算經有限次復合而成的式子稱為關系代數表達式。這種表達式的運算結果仍然是一個關系。可以用關系代數表達式表示對資料庫的查詢和更新操作。
三、舉例說明:
設教學資料庫中有3個關系:
學生關系S(SNO, SNAME,AGE,SEX)
學習關系SC(SNO,CNO,GRADE)
課程關系C(CNO,CNAME,TEACHER)
(1) 檢索學習課程號為C2的學生學號與成績
------------------------------------
SELECT SNO,GRADE
FROM SC
WHERE CNO='C2'
------------------------------------
π SNO, GRADE (σ CNO='C2' (SC))
************************************
(2) 檢索學習課程號為C2的學生學號與姓名
------------------------------------
SELECT SC.SNO,S.SNAME
FROM SC,S
WHERE SC.SNO=S.SNO
AND SC.CNO='C2'
------------------------------------
π SNO,SNAME (σ CNO='C2' (S SC))
此查詢涉及S和SC,先進行自然連接,然後再執行選擇投影操作。
----
π SNO,SNAME (S) (π SNO (σ CNO='C2' (SC)))
自然連接的右分量為"學了C2課的學生學號的集合"。
此表達式比前一個表達式優化,執行起來要省時間、省空間。
************************************
(3) 檢索選修課程名為MATHS的學生學號與姓名
------------------------------------
SELECT SC.SNO,S.SNAME
FROM SC,S,C
WHERE SC.SNO=S.SNO
AND SC.CNO=C.CNO
AND C.CNAME='MATHS'
------------------------------------
π SNO, SANME (σ CNAME='MATHS' (S SC C))
************************************
(4) 檢索選修課程號為C2或C4的學生學號
------------------------------------
SELECT SNO
FROM SC
WHERE CNO='C2'
OR CNO='C4'
------------------------------------
π SNO (σ CNO='C2'∨CNO='C4' (SC))
************************************
(5) 檢索至少選修課程號為C2或C4的學生學號
------------------------------------
SELECT SA.SNO
FROM SC AS SA,SC AS SB
WHERE SA.SNO=SB.SNO
AND SA.CNO='C2'
AND SB.CNO='C4'
------------------------------------
π 1 (σ 1=4∧2='C2'∧5='C4' (SC×SC))
************************************
(6) 檢索不學C2課的學生姓名與年齡
------------------------------------
SELECT SNAME,AGE
FROM S
MINUS
SELECT S.SNAME,S.AGE
FROM SC,S
WHERE SC.SNO=S.SNO
AND SC.CNO='C2'
(Oracle)
------------------------------------
π SNAME, AGE (S)-π SNAME, AGE (σ CNO='C2' (S SC))
************************************
(7) 檢索學習全部課程的學生姓名
------------------------------------