目前分類:SQL語法 (2)

瀏覽方式: 標題列表 簡短摘要

Oracle用法 計算日期

要換算成 西元年 就是+ 19110000 
要換算成 民國年 就是 - 19110000 

計算欄位與今天當日的差距 by 天為單位 
SysDate - to_date(欄位名稱+19110000,'YYYYMMDD') 

計算欄位與今日的差距 by 月為單位 
months_between(SysDate, to_date(欄位名稱+19110000,'YYYYMMDD')) 

如果還要再計算到年的話 那就改成 天除365 月除12 

希望找到今天日期的前一天 加上算出來的欄位 要長度七碼 需要補齊幾碼的話 
rpad(trim(to_char(sysdate-1,'YYYYMMDD')-19110000),7,' ') 


直接從SQL 裡面去做運算判斷 他是不是符合條件資格 符合就呈現要的字的話 如果 大於A 而且 又等於B 

select(case when (months_between(sysdate, to_date(欄位1+19110000,'YYYYMMDD'))/12)>A and 欄位2='B' then '所要呈現的文字說明' end)as 新欄位名稱  from table_name

Pescados 發表在 痞客邦 留言(0) 人氣()

之前用的oracle資料庫 去計算日期相減  
改到 sql server上就有差異 紀錄一下免的忘記 

如果欄位並非日期格式的話 要先轉換成日期格式 
CONVERT(datetime,日期欄位1),CONVERT(datetime,日期欄位2)
然後再將轉換好的丟進去做運算
DATEDIFF(datepart ,startdate,enddate)

所以結合一下 就可以寫成下面的方式
DATEDIFF (day,CONVERT(datetime,日期欄位1),CONVERT(datetime,日期欄位2)) 

備註 參數的部份 可以替換
日期部分 縮寫

yy、yyyy

qq、q

mm、m

一年當中的第幾天

dy、y

dd、d

wk、ww

星期幾

dw

hh

mi、n

ss、s

毫秒

ms

Pescados 發表在 痞客邦 留言(0) 人氣()