sql 常用内置函数

  1. 获取服务器时间
    select getdate()
    Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
    Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
    Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
    Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
    Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
    Select CONVERT(varchar(100), GETDATE(), 112): 20060516
    Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
    注:如果对日期精确度需要达到毫秒级及其以下的,请使用datetime2(3)类型,括号内为保留3位毫秒精度
  2. 日期操作
    日期获取:DATENAME(datepart,date)
      SELECT DATENAME(yy, '2021/01/06'):2021
    日期加减:DATEADD(datepart,number,date)
      SELECT DATEADD(DD,-1, '2021-07-07'):2021-07-06 00:00:00.000
    日期差值:DATEDIFF(datepart,date1,date2):date2-date1
      SELECT DATEDIFF(''d'','2003-01-01','2003-01-02'):1
      SELECT DATEDIFF(''d'','2003-01-02','2003-01-01'):-1
    datepart缩写datepart缩写
    yy, yyyy,year 星期 dw, w
    季度 qq, q 小时 hh
    mm, m 分钟 mi, n
    年中的日 dy, y ss, s
    dd, d 毫秒 ms
    wk, ww 微妙 mcs
        纳秒 ns
     

     

  3. 定位字符
    select CHARINDEX('1','123'):1
    select CHARINDEX('222','123'):0

      

  4. 截断
    SUBSTRING('123',1,2)
    结果:12
    LEFT('123',1)
    结果:1
    RIGHT('123',1)
    结果:3

     

  5. 倒置
    REVERSE('123')
    结果:321

     

  6. 长度测量
    LEN('123')
    结果:3

     

  7. 替换
    REPLACE('123','1','a')--在123中查找1并将其替换成a
    结果:a23
    STUFF('123',1,2,'a')--在123中从位置1截取2个单位的字符,并将其替换成a
    结果:a3
    替换空格、回车等
    REPLACE(REPLACE(REPLACE(REPLACE(column,CHAR(10),''),CHAR(13),''),CHAR(32),''),CHAR(9),'') 

     

  8. 获取当前登录用户
    USER_ID(),以获取与当前连接关联的数据库用户 ID。
    USER_NAME(),以获取与数据库用户 ID 关联的数据库用户名
    

     

  9. 转换数据类型
    select CAST('123' as int)   -- 123
    select CONVERT(int, '123')  -- 123

     

  10. 获取自增主键
    --单行
    select @@identity
    
    --批量
    create table #test (
        [id] [bigint] IDENTITY(1,1) NOT NULL,
        [name] [nvarchar](50) NULL
    )
    
    DECLARE @batchInsertedIds TABLE (
        ID bigint 
    )
    
    INSERT INTO #test([name])
    OUTPUT INSERTED.id INTO @batchInsertedIds(ID)
    select [name] from #test
    
    select * from #test
    select * from @batchInsertedIds

     

  11. 分页
    ROW_NUMBER() OVER(PARTITION BY Column ORDER BY column ASC) AS rownum

     

  12. 拼接
    STUFF(( SELECT  ';' +column FROM table WHERE 1=1 FOR XML PATH('')), 1, 1, '')

     

posted @ 2021-04-25 14:40  疯狂阿坤  阅读(170)  评论(0编辑  收藏  举报