Sql server 常用基本语法

1、日期的常用格式

SELECT CONVERT(varchar(100), GETDATE(), 0)-- 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 1)-- 05/16/06
SELECT CONVERT(varchar(100), GETDATE(), 2)-- 06.05.16
SELECT CONVERT(varchar(100), GETDATE(), 3)-- 16/05/06
SELECT CONVERT(varchar(100), GETDATE(), 4)-- 16.05.06
SELECT CONVERT(varchar(100), GETDATE(), 5)-- 16-05-06
SELECT CONVERT(varchar(100), GETDATE(), 6)-- 16 05 06
SELECT CONVERT(varchar(100), GETDATE(), 7)-- 05 16, 06
SELECT CONVERT(varchar(100), GETDATE(), 8)-- 10:57:46
SELECT CONVERT(varchar(100), GETDATE(), 9)-- 05 16 2006 10:57:46:827AM
SELECT CONVERT(varchar(100), GETDATE(), 10)-- 05-16-06
SELECT CONVERT(varchar(100), GETDATE(), 11)-- 06/05/16
SELECT CONVERT(varchar(100), GETDATE(), 12)-- 060516
SELECT CONVERT(varchar(100), GETDATE(), 13)-- 16 05 2006 10:57:46:937
SELECT CONVERT(varchar(100), GETDATE(), 14)-- 10:57:46:967
SELECT CONVERT(varchar(100), GETDATE(), 20)-- 2006-05-16 10:57:47
SELECT CONVERT(varchar(100), GETDATE(), 21)-- 2006-05-16 10:57:47.157
SELECT CONVERT(varchar(100), GETDATE(), 22)-- 05/16/06 10:57:47 AM
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(), 100)-- 05 16 2006 10:57AM
SELECT CONVERT(varchar(100), GETDATE(), 101)-- 05/16/2006
SELECT CONVERT(varchar(100), GETDATE(), 102)-- 2006.05.16
SELECT CONVERT(varchar(100), GETDATE(), 103)-- 16/05/2006
SELECT CONVERT(varchar(100), GETDATE(), 104)-- 16.05.2006
SELECT CONVERT(varchar(100), GETDATE(), 105)-- 16-05-2006
SELECT CONVERT(varchar(100), GETDATE(), 106)-- 16 05 2006
SELECT CONVERT(varchar(100), GETDATE(), 107)-- 05 16, 2006
SELECT CONVERT(varchar(100), GETDATE(), 108)-- 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 109)-- 05 16 2006 10:57:49:437AM
SELECT CONVERT(varchar(100), GETDATE(), 110)-- 05-16-2006
SELECT CONVERT(varchar(100), GETDATE(), 111)-- 2006/05/16
SELECT CONVERT(varchar(100), GETDATE(), 112)-- 20060516
SELECT CONVERT(varchar(100), GETDATE(), 113)-- 16 05 2006 10:57:49:513
SELECT CONVERT(varchar(100), GETDATE(), 114)-- 10:57:49:547
SELECT CONVERT(varchar(100), GETDATE(), 120)-- 2006-05-16 10:57:49
SELECT CONVERT(varchar(100), GETDATE(), 121)-- 2006
Select CONVERT(varchar(100), GETDATE(), 126)-- 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130)-- 18 ???? ?????? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131)-- 18/04/1427 10:57:49:920AM
select DATENAME(week,getdate()) -- 獲取当年的第几週  
 

 2、Sql server基础函数,语法等(1)

select GETDATE() as '当前日期时间',
convert(varchar(10),DatePart(year,GetDate()))+'-'+convert(varchar(10),DatePart(month,GetDate()))+'-'+convert(varchar(10),DatePart(day,GetDate())) as '当前日期', 
convert(varchar(50),GetDate(),120) as '当前日期2',
DatePart(quarter,GetDate()) as '第几季度',
DatePart(week,GetDate()) as '一年中的第几周',
DatePart(DAYOFYEAR,GetDate()) as '一年中的第几天',
DatePart(year,GetDate()) as '年',
DatePart(month,GetDate()) as '月',
DatePart(day,GetDate()) as '日',
DatePart(hour,GetDate()) as '时',
DatePart(minute,GetDate()) as '分',	
DatePart(second,GetDate()) as '秒',
DatePart(MILLISECOND,GetDate()) as '豪秒',
DatePart(WEEKDAY,GetDate()) as '星期几'

select GETDATE() as '当前日期时间',
DatePart(year,GetDate()) + '-' + DatePart(month,GetDate()) as '当前日期', --年份+周
convert (varchar(10),GETDATE (),120) as '當前日期2',
DatePart(quarter,GetDate()) as '第几季度',
DatePart(week,GetDate()) as '一年中的第几周',
DatePart(DAYOFYEAR,GetDate()) as '一年中的第几天',
DatePart(year,GetDate()) as '年',
DatePart(month,GetDate()) as '月',
DatePart(day,GetDate()) as '日',
DatePart(hour,GetDate()) as '时',
DatePart(minute,GetDate()) as '分',
DatePart(second,GetDate()) as '秒',
DatePart(MILLISECOND,GetDate()) as '豪秒',
DatePart(WEEKDAY,GetDate()) as '星期几'


select   DATENAME(weekday,getdate())          --字符型星期几,星期天
select datepart(weekday,getdate())            --查询出来的结果为相应的星期+1,如星期天为1,星期一为2,星期二为3

SELECT DATEDIFF(DY,'2009-11-21','2008-11-1') as 天數  --两个日期之间相隔有多少天
select dateadd (DY,6,'2008-11-1') as 日期             --在当前日期的基础上加多少天
select CONVERT(varchar(20),getdate(),120) 	--將指定日期按照一定格式轉換為某種類型
select format(getdate(),'yyyy-MM-dd')     --將日期轉換為指定格式

select cast(123 as nvarchar(4))     --数据格式转换,CAST函数用于将某种数据类型的表达式显式转换为另一种数据类型        
select convert(varchar(10),DATEADD(mm, DATEDIFF(mm,0,getdate()), 0),120) --獲取當前月第一天
select convert(varchar(10),dateadd(d,-1,convert(varchar(7),dateadd(m,1,getdate()),120)+'-01'),120) --獲取當前月最後一天

--sql常用函數
select ascii(2) big_A ,ascii('a') small_a --ASCII码字符转换函数
select  CHAR(98) --字符转换函数  将十进制转换为字符 b
select  CHAR(35) --字符转换函数  将十进制转换为字符 #
select  CHAR(38) --字符转换函数  将十进制转换为字符 &
select  CHAR(125) --字符转换函数  将十进制转换为字符 }
select LOWER('AAaaasdd'),UPPER('aaaaaaasssssDDD')--全部转为大小写
select str('111.1333',20,4)  --把数值型数据转换为字符型数据。
select LTRIM('  qsawda  ') --把字符串头部的空格去掉。
select RTRIM('   dasd   ') --把字符串尾部的空格去掉。
select left('123456789',4) --字符串左起4個字符串
select RIGHT ('123456789',4) --字符串右起4個字符串
select SUBSTRING ('123456789',1,2) --返回从字符串左边第1个字符起2个字符的部分。
select charindex ('23','123456789') --返回字符串中某个指定的子串出现的开始位置。
select PATINDEX('%56%','123456789')  --返回字符串中某个指定的字符出现的开始位置。
select QUOTENAME('123456789','()') --返回被特定字符括起来的字符串。
select REPLICATE ('123456789',3) --返回一个重复123456789指定3次数的字符串。
select REVERSE ('123456789') --将指定的字符串的字符排列顺序颠倒。
select REPLACE ('123456789','34','asdfg')  --返回被替换了指定子串的字符串。
select space(2) --返回一个有指定长度的空白字符串
select  stuff('123456789',2,3,'qwwee')--用另一子串替换字符串指定位置、长度的子串。
select cast(111 as varchar(10)) --数据类型转换函数
select convert(varchar (10),GETDATE(),120)      --具体的日期  2021-07-04
select day(GETDATE ())	                        --当月的日期
select month(GETDATE ())	                    --当年的月份
select year(GETDATE ())	                        --年份
select dateadd(year,2,getdate())--返回指定日期date 加上指定的额外日期(year\day\month)间隔number 产生的新日期,2021-07-04 10:59:11.270-->2023-07-04 10:59:11.270
select DATEDIFF(day,'2020-01-21','2020-12-01')--返回两个指定日期在datepart 方面的不同之处,即date2 超过date1 的差距值,其结果值是一个带有正负号的整数值。
select datename(day,'2020-01-21')--DATENAME (<datepart>, <date>)以字符串的形式返回日期的指定部分此部分。
select DATEPART(day,'2020-01-21')--DATEPART (<datepart>, <date>)以數值的形式返回日期的指定部分此部分。
Select CONVERT(varchar(100), GETDATE(), 8)  --当前时间的时\分\秒
Select CONVERT(varchar(100), GETDATE(), 12) --日期格式年\月\日\210704
Select CONVERT(varchar(100), GETDATE(), 23) --日期格式年\月\日\2021-07-04
select abs(-22) --求绝对值
select ceiling(2.3) --向上取整
select FLOOR (3.2) --向下取整
select ROUND (4.5,0) --四捨五入
SELECT exp(2) --取指数
SELECT pi()   --pi的数值
SELECT POWER (2,3) --2的三次方
select cast(rand()*10 as int ) --随机数产生器
select rand()                  --随机数产生器
select SQRT (5)  --求平方根
select suser_name()            --当前登录的账号
select user_name()             --返回在当前数据中的当前用户名/角色名称
select nchar(65)--根据 Unicode 标准的定义,返回具有指定的整数代码的 Unicode 字符。

--返回一个由四个字符组成的代码 (SOUNDEX),用于评估两个字符串的相似性。
SELECT SOUNDEX ('lihan'), SOUNDEX ('lihon') 

--返回一个整数值,指示两个字符表达式的 SOUNDEX 值之间的差异。
SELECT difference('lihan','liha') 

--以BOOK_PRICE为基础从小到大进行排序,并将序号以row_number显示出来,ROW_NUMBER()函数作用就是将select查询到的数据进行排序,每一条数据加一个序号,当存在相同成绩的学生时,ROW_NUMBER()会依次进行排序,他们序号不相同
SELECT row_number()over(order by BOOK_PRICE) as row_number,* FROM DBO.book 

--RANK()函数,顾名思义排名函数,可以对某一个字段进行排名,出现相同的数据时,他们的排名是一样的。
select rank() over(order by BOOK_PRICE),* from DBO.book 

--DENSE_RANK()函数也是排名函数,DENSE_RANK()密集的排名他和RANK()区别在于,排名的连续性,DENSE_RANK()排名是连续的,RANK()是跳跃的排名,所以一般情况下用的排名函数就是RANK()。
select dense_rank() over(order by BOOK_PRICE),* from DBO.book 

--NTILE()函数是将有序分区中的行分发到指定数目的组中,各个组有编号,编号从1开始,就像我们说的’分区’一样 ,分为几个区,一个区会有多少个,此处就是分为4个区
select ntile(4) over(order by BOOK_PRICE),* from DBO.book order by BOOK_PRICE

select * from dbo.book where book_price != 0                     --条件查询
select * from dbo.bookfu where bookfu.book_price <>0             --条件查询,带表中的栏位.
declare @id int ,@name varchar(20)                               --定义临时变量
select convert (varchar(20),getdate(),120)                       --日期格式
select str('11.111111',4,4)         --转换为字符串

select DATENAME (day,getdate())                                  --获取当前的月份日期
select DATEPART (dd ,getdate())                                  --获取当前的月份日期
select sqrt(36)                                                  --求平方根
select cast (1.2220000 as float)                                 --转换为单精度数值
select * from dbo.book  where book_author =''                    --条件查询
select patindex('%4%','3215454')                           --获取字符串第一次出现的索引位置


select cast(dateadd(day,-1,datename(year,dateadd(month,1,getdate()))+datename(month,dateadd(month,1,getdate()))+'01') as date)                                      --當月最後一天

SELECT  Code, Name, Price
FROM              Test1
--將數據表Test1中的桃子編號改為56
update Test1 set Code = '56' where Name = '桃子'
--插入
insert into Test1 (Code,Name,Price) values(85,'菠蘿',9)
------------------------------------
--求和
SELECT SUM(Price) from  Test1
--求最大值
SELECT MAX(Price) from  Test1
--求最小值
SELECT Min(Price) from  Test1

--查詢現在的時間
select GETDATE()

--對現有的時間進行天數(年、月、日)添加   2020-09-10 11:38:08.560 ----- 2020-09-12 11:38:24.043
select DATEADD(d,2,GETDATE()) 

--對現有的時間 2020-09-10 11:38:08.560 與 2020-09-01 求差值
select DATEDIFF(d,'2020/09/01',GETDATE())   

--将某种数据类型的表达式显式转换为另一种数据类型
SELECT CAST('ABCDE' AS NVARCHAR(3)) AS 结果

--字符或者字符串在另一个字符串中的起始位置
SELECT CHARINDEX('C','ABCDE')

--顯示字符長度
SELECT LEN('ABCDE')

--顯示不同的時間格式
SELECT CONVERT(VARCHAR(10),GETDATE(),110)

SELECT CONVERT(VARCHAR(10),GETDATE(),120)

--創建臨時表
SELECT   * into  #AB 
FROM    Test1

--檢驗臨時表
SELECT   *  
FROM    #AB 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值