2010年4月25日 星期日

SQL Server 常用命令

數值

[三位一撇]

假設欄位 f1 為 int 或是 float (不含小數點)

以下可能會出現 123,456.00
select convert(varchar(20), cast (f1 as money), 1)
為了去掉 .00 (MS 預設會帶出的值,沒辦法, 因為是從 money cast 出來)
上述再轉一下
select replace( convert(varchar(20), cast (f1 as money), 1) , '.00', '')

日期

[區間查詢] (d1 到 d2)

假設日期儲存時沒有時間部分

select * from tbl where dt between d1 and d2

假設日期儲存時有時間部分
select * from tbl where dt >= d1 and dt < (d2 + 1)

逼不得已才用 (影響 Performance)
select * from tbl where convert(varchar(dt, varchar(10), 111)) between 'YYYY/MM/DD'
and 'YYYY/MM/DD'


[民國年日期顯示]

output example: 98年1月1日
SELECT CAST(YEAR(getdate()) - 1911 AS NVARCHAR(3)) + '年'
+ CAST(Month(getdate()) AS NVARCHAR(2)) + '月'
+ CAST(Day(getdate()) AS NVARCHAR(2)) + '日'

output example: 98/1/1
SELECT CAST(YEAR(getdate()) - 1911 AS NVARCHAR(3)) + '/'
+ CAST(Month(getdate()) AS NVARCHAR(2)) + '/'
+ CAST(Day(getdate()) AS NVARCHAR(2))

output example: 098/01/01
SELECT RIGHT('000' + CAST(year(getdate()) - 1911 AS VARCHAR),3) + '/' + substring(convert(varchar(10), getdate(), 111), 6, 5)

output example: 0980101
SELECT RIGHT('000' + CAST(year(getdate()) - 1911 AS VARCHAR),3) + substring(convert(varchar(10), getdate(), 112), 5, 4)

沒有留言:

張貼留言