2015年7月24日 星期五

[T-SQL] 互相轉換TimeStamp yyyyMMddhh24mmss與datetime做日期操作

說明:
1. 如何將yyyyMMddhh24mmss的字串在T-SQL中轉型為DateTime格式?
2. 如何將DateTime格式轉為yyyyMMddhh24mmss?

做法:
1. SELECT CAST(SUBSTRING(timestamp, 1, 8)+' '+SUBSTRING(timestamp, 9, 2)+':'+SUBSTRING(timestamp, 11, 2)+':'+SUBSTRING(timestamp, 13, 2) AS datetime)

轉型為DateTime後,即可使用DateAdd函式做處理,例:
DateAdd(hour, -2, datetime)

2. SELECT CONVERT(varchar(20), GETDATE(), 112) + REPLACE(CONVERT(varchar(8), GETDATE(), 108),':','');


參考資料:
https://jerry2yang.wordpress.com/2012/07/04/sql-%E5%AD%97%E4%B8%B2%E6%A8%A3%E5%BC%8F%E8%BD%89%E6%8F%9B%E7%82%BA%E6%97%A5%E6%9C%9F%E6%A0%BC%E5%BC%8F/
https://msdn.microsoft.com/zh-tw/library/ms186819(v=sql.120).aspx

[C#] 使用LINQ操作DataTable撈出Top N資料

說明:
使用LINQ找出DataTable內依欄位值最大的N筆資料


做法:
var TopN = (from row in dt.AsEnumerable() select row).OrderByDescending(x => x.Field<string>("Column")).Take(N);



參考資料:
http://stackoverflow.com/questions/5344805/linq-orderby-descending-query
http://www.dotblogs.com.tw/yc421206/archive/2014/07/14/145944.aspx
https://msdn.microsoft.com/zh-tw/library/bb552415(v=vs.110).aspx
http://stackoverflow.com/questions/10855/linq-query-on-a-datatable

[T-SQL] 如何產出0~0.9之間的亂數

說明:
如何產出0~0.9(小數位數1位)之間的亂數。


語法:
SELECT CAST(CAST(NEWID() AS binary(1))%10 AS float)/10

其中NEWID()會產生GUID(32個16進位),將之轉型為1 byte,因此值會在0-255之間,
mod 10後,值會在0-9之間,再除以10,值就會跑在0-0.9之間。


參考資料:
https://msdn.microsoft.com/zh-tw/library/ms190348(v=sql.120).aspx
http://caryhsu.blogspot.tw/2012/08/rand.html