SQL 筆記
--查詢某一列在哪個表里 SELECT name , object_id , type , type_desc FROM sys.objects WHERE object_id IN ( SELECT object_id FROM sys.columns WHERE name = '列名' )
下面是關于用SQL對日期的一些查詢 和統計,主要是在項目中有遇到 按照 日、周、月、年來統計數據,特此記錄一下:
1、根據當前日期獲取之前一個月的數據
--根據當前日期 往前推一個月 WITH WeekDate AS ( SELECT CAST(DATEADD(DAY,-31,GETDATE()) AS DATETIME) AS riqi UNION ALL SELECT riqi + 1 FROM WeekDate WHERE riqi+1<GETDATE() ) SELECT CONVERT(CHAR(8),a.riqi,112) FROM WeekDate a
2、根據當前日期 獲取當前月的每一天的數據
--根據當前日期 獲取當前月 每一天 WITH WeekDate AS ( select dateadd(d,-day(GETDATE())+1,GETDATE()) AS riqi UNION ALL SELECT riqi + 1 FROM WeekDate WHERE riqi+1<=(select dateadd(d,-day(GETDATE()),dateadd(m,1,GETDATE()))) ) SELECT CONVERT(CHAR(8),a.riqi,112) AS 日 FROM WeekDate a
3、根據當前時間獲取本周日期
--根據當前時間獲取本周日期 每一天 WITH WeekDate AS ( SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) AS riqi UNION ALL SELECT riqi + 1 FROM WeekDate WHERE riqi+1<=(SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 6)) ) SELECT CONVERT(CHAR(8),a.riqi,112) AS 日 FROM WeekDate a
4、將一串編號顯示成一個字段 用逗號分隔
SELECT STUFF(( SELECT ',' + CONVERT(VARCHAR(500), RoleID) FROM SysRole tt FOR XML PATH('') ), 1, 1, '') AS RoleID SELECT RoleID FROM dbo.SysRole
效果如下:

5、其他
--當前時間 獲取本周第一天 周一 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) --當前時間 獲取本周最后一天 周日 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 6) ---當月第一天 select CONVERT(CHAR(8),dateadd(d,-day(getdate())+1,getdate()) ,112) ---當月最后一天 select CONVERT(CHAR(8),dateadd(d,-day(getdate()),dateadd(m,1,getdate())),112) SELECT YEAR(GETDATE()) //2016 SELECT MONTH(GETDATE()) //11 SELECT DAY(GETDATE()) //27
以后再有收集到的再慢慢更

浙公網安備 33010602011771號