----------------------------------------常用日期函数-----------------------------------------------------------

---getdate() 当前日期函数
select GETDATE()
use school
select * from shop3_jb order by id desc
insert into shop3_jb values('手机','sp-a5',100,2000,GETDATE())

---dateadd() 日期添加
--datepart:year年/quarter季度/month/day/week/weekday/hour/minute/second/millisecond
select DATEADD(hour,1,getdate())
select DATEADD(day,2,'2010-5-1')

---例:查看食品是否过期
use school
select * from shop3_jb where DATEADD(MONTH,2,datel)<=GETDATE()

---datediff() 时间差(后面的时间减去前去的时间)
--datepart:year年/quarter季度/month/day/week/weekday/hour/minute/second/millisecond
select DATEDIFF(day,GETDATE(),'2010-8-8')
select DATEDIFF(day,'2010-8-2','2010-8-8')

---datename(datepart,date)  返回指定日期部分的字符串
--datepart:year年/quarter季度/month/day/week/weekday/hour/minute/second/millisecond
select DATENAME(year,'2010-5-6')
select DATENAME(hour,'2010-6-8')

---datepart(datepart,date)  返回指定日期部分的整数
select DATEPART(year,'2010-3-9')
---例:找出商品日期为8月份的记录
select * from shop3_jb
select * from shop3_jb where datepart(month,datel)='8'

------------------------------------------常用数学函数---------------------------------------------------------

----ABS() 返回给定数字表达式的绝对值
select ABS(-12)

----rand() 返回0到1之间(0<=x<1)的随机float值
select RAND()

----round(num,精度)  返回数字表达式并四舍五入为指定的长度或精度(精度表示小数点后有几位数)
select ROUND(32.61356834,3)

----floor()  返回小于或等于所给数字表达式的最大整数
select FLOOR(34.6),FLOOR(34.2)

----ceiling() 返回大于或等于所给数字表达式的最小整数
select CEILING(67.68632),CEILING(67.28631)

----例:随机抽取25(0<=x<25)道题
select FLOOR(RAND()*26) as 题编号,FLOOR(RAND()*26) as 题编号,FLOOR(RAND()*26) as 题编号

----例:七星彩(7个空,每个空只出现0到9的数)
select FLOOR(RAND()*10),FLOOR(RAND()*10),FLOOR(RAND()*10),FLOOR(RAND()*10),FLOOR(RAND()*10),FLOOR(RAND()*10),FLOOR(RAND()*10)

----sqrt() 返回给定表达式的平方根
select SQRT(9)

-----------------------------------常用字符串函数--------------------------------------------------

----left('字符串',个数)  返回从字符串左边开始指定个数的字符
select left('abcdefg',4)

----right('字符串',个数)  返回从字符串右边开始指定个数的字符
select right('adfghj',3)

----len()  字符个数,其中不包括尾空格
select LEN('abcd   ')   /*字符个数为4个*/
select LEN('  abcd')    /*字符个数为6个*/

----lower()  将大写转换成小写
select LOWER('abCDERT')

----upper()  将小写转换成大写
select UPPER('abcWQERT')

----ltrim() 删除左空格
select ('      abc')     /*原来有左空格的情况*/
select LTRIM('      abc')    /*删除左空格的情况*/

----rtrim() 删除右空格
select ('abc   ')        /*原来有右空格的情况*/
select RTRIM('abc   ')   /*删除右空格的情况(效果不是很明显)*/

-----例:将'      abcdefgh        '左右的空格全部删除
select RTRIM(LTRIM('    abcdefgh    '))    /*首先删除左空格,然后再删除右空格*/

----replace('原串','查找串','替换串'):用第三个表达式替换第一个字符串表达式中出现的所有第二个给定字符表达式
select REPLACE('abcdefg','bcd','qq')
select REPLACE('我家在长春','长春','北京')

----reverse() 反转
select REVERSE('abcdef')

----space()  返回多少个空格' '
select SPACE(3)

----str(float_num,个数,精度):把数字数据转换成字符数据
select STR(134.626,5,2)

----stuff() 删除字符,用别的字符添加
select STUFF('abcdghyu',2,3,'QQ')  /*2表示从第几个字符开始;3表示从某个字符开始到第几个字符结束*/

----substring('字符串',开始,个数):截串
select SUBSTRING('abcdefgh',2,5)  /*表示从第二个字符开始数到第五个字符,并将其删除*/

-----例:将'2010-08-04 15:17:23.297'截串
select SUBSTRING('2010-08-04 15:17:23.297',1,16)

------------------------------------------------系统函数----------------------------------------------------------

----current_user  返回当前的用户名
select CURRENT_USER

----datalength() 返回任何表达式所占用的字节数
select DATALENGTH('abcd')
----相当于
select LEN('abcd')

----@@error:返回最后执行的t-sql语句的错误代码
----@@error=0:表示语句执行成功

--@@rowcount:返回上一t-sql语句影响的行数
--@@ROWCOUNT=0操作失败
select * from shop3_jb
select @@ROWCOUNT

insert into shop3_jb values('电话','as_26',100,2000,'2010-5-1')
select @@ROWCOUNT

--conver(data_type,表达式,格式):转换类型
select CONVERT(varchar(19),GETDATE(),120)