SQL 笔记

Posted WeBlog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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) ASFROM 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) ASFROM 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

 

以后再有收集到的再慢慢更

 

以上是关于SQL 笔记的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft SQL Server 代码片段收集

缺少 SQL SERVER 2014 代码片段

sql Oracle代码片段

MyBatis-05-笔记

sql 日期转换代码片段 - Dato,120,konvertere

以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?