2012年8月15日 星期三

0815 SQL 語法 日期的應用 摘要及分組

DATEPART 從日其中抽出一個日期值

SELECT GETDATE();

SELECT DATEPART(YEAR, GETDATE()) ;
得到的值是 2012 所以DATEPART 是很有用的
請在網路上搜尋DATEPART地說明
這個真的真的真的常用!!!
常用到取得的數值做比較
選取 BOOK資料表中1999年5月的銷售資料


日期時間是用數值表示 整數代表日 小數代表時間
UNIXTIME UNIXDATE (1970 01 01 00:00)代表起始值
第二種                             (1900 01 01 00:00)
第三種                             (0000 01 01 00:00)

日期相加減必須先轉型(不是從資料庫獲得的訊息)

select '2012-9-1'-'2012-8-1' 得到是錯誤訊息 因為是兩個字串相減 (無法計算) 必須轉型
select convert(datetime, 2012-9-1) - convert(datetime, 2012-8-1)
結果是  1900-2-1 因為是datetime 格式 從起始值表示 (1900-01-01) 故答案也是錯誤 必須在轉型

正確是
select convert(integer, (convert(datetime, 2012-9-1)-convert(datetime, 2012-8-1)) = 31
答案是31天

從資料庫擷取到的日期相加減 如下,請注意函數的不同....


日期格式轉換用convert 必須轉為varchar


CONVERT 語法說明


利用case 計算條件數值

利用coalesce 將 null值轉為其他值表現出來 ,在SQLserver 可以用isnull 的功能代替!!
nullif 是將 其他值轉換為null 值 可避免除數是0

分組之後再匯總
使用彙總函數分類篩選資料庫,重點是先分類再彙總

 資料摘要與分組

第一個是取銷售料最大第一筆訂單,重要的是用兩層select
第二個選取客戶總數(不重複)

沒有留言:

張貼留言