SQL 数据库函数
字符串函数
lower(字符串表达式) | select lower('ABCDEF')返回 abcdef | 返回大写字符数据转换为小写的字符表达式。 upper(字符串表达式) | select upper('abcdef')返回 ABCDEF | 返回小写字符数据转换为大写的字符表达式。 ltrim(字符串表达式) | select ltrim(' abc')返回 abc | 返回删除了前导空格之后的字符表达式。 rtrim(字符串表达式) | select rtrim('abc ')返回 abc | 返回删除了尾随空格之后的字符表达式。 left(字符串表达式,整数表达式) | select left('abcdefg',2) 返回 ab | 返回字符串中从左边开始指定个数的字符。 right(字符串表达式,整数表达式) | select right('abcdefg',2) 返回fg | 返回字符串中从右边开始指定个数的字符。 substring(字符串表达式,开始位置,长度) | select substring('abcdef',2,2)返回bc | 返回子字符串 len(字符串表达式) | select len('abcdefg')返回 7 select len('abcdefg ') 返回7 | 返回指定字符串表达式的字符数,其中不包含尾随空格。 difference(字符串表达式1,字符串表达式2) | select difference('Green','Greene')返回4 | 返回一个0到4的整数值,指示两个字符表达式的之间的相似程度。0 表示几乎不同或完全不同,4表示几乎相同或完全相同。注意相似并不代表相等 space(整数表达式) | select 'a'+space(2)+'b' 返回 a b | 返回由指定数目的空格组成的字符串 str(float型小数[,总长度[,小数点后保留的位数]])| eg: select str(123.451)返回 123(123前面有空格) select str(123.451,3)返回123 select str(123.451,7,3)返回123.451 select str(123.451,7,1)返回123.5 select str(123.451,5,3)返回123.5 select str(123.651,2)返回** 返回由数字转换成的字符串。返回字符数不到总长度的前面补空格,超过总长度的截断小数位。如果需要截断整数位则返回**。 注意在截断时遵循四舍五入 总长度。它包括小数点、符号、数字以及空格。默认值为 10。 小数点后最多保留16位。默认不保留小数点后面的数字
日期时间函数
dateadd(日期部分,数字,日期) | select dateadd(year,45,'1990-12-11') //2035-12-11 00:00:00.00 | 返回给指定日期加上一个时间间隔后的新的日期值。
datediff(日期部分,开始日期,结束日期) | select datediff(yy,'1990-12-11','2008-9-10')//18 | 返回两个指定日期的指定日期部分的差的整数值。
datepart(日期部分,日期) | select datepart(mm,'2007-12-11')//12 | 返回表示指定日期的指定日期部分的整数。
getdate() | select getdate()\\2015-06-28 18:57:24.153 | 返回当前系统日期和时间。
getutcdate() | select getutcdate()\\2015-06-28 18:57:24.153 | 返回表示当前的 UTC(世界标准时间)时间。即格林尼治时间(GMT)
dateadd、datediff、datename、datepart的日期部分含义
日期部分 | 含义 | 缩写 |
year | 年 | yy,yyyy |
quarter | 季 | q,qq |
month | 月 | m,mm |
dayofyear | 天 | dy,y |
day | 天 | dd,d |
week | 星期 | wk,ww |
hour | 小时 | hh |
minute | 分钟 | mi,n |
second | 秒 | s,ss |
millisecond | 毫秒 | ms |
---恢复内容开始--- 今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0 昨天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=1 7天内的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())<=7 30天内的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())<=30 本月的所有数据:select * from 表名 where DateDiff(mm,datetime类型字段,getdate())=0 本年的所有数据:select * from 表名 where DateDiff(yy,datetime类型字段,getdate())=0 查询今天是今年的第几天: select datepart(dayofyear,getDate()) 查询今天是本月的第几天:1. select datepart(dd, getDate()) 2.select day(getDate()) 查询本周的星期一日期是多少 (注意:指定日期不能是周日,如果是周日会计算到下周一去。所以如果是周日要减一天) SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0) 查询昨天日期:select convert(char,dateadd(DD,-1,getdate()),111) //111是样式号,(100-114) 查询本月第一天日期:Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) as firstday 查询本月最后一天日期:Select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)) as lastday //修改-3的值会有相应的变化 本月有多少天:select datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast((cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)+'-01' ) as datetime )))) 求两个时间段相差几天:select datediff(day,'2016/5/17','2016/8/20') as daysum 在指定的日期上±N天:select convert(char,dateadd(dd,1,'2016/8/20'),111) as riqi //输出2016/8/21 在指定的日期上±N分钟:select dateadd(mi,-15,getdate()) //查询当前时间15分钟之前的日期
数学函数
round(数值表达式[,长度[,操作方式]]) select round(1236.555,2)\\1236.560 select round(1236.555,2,1)\\1236.550 select round(1236.555,0)\\1237.000 select round(1236.555,-1)\\1240.000 select round(1236.555,-1,1)\\1230.000 select round(1236.555,-4)\\0.000 select round(5236.555,-4)\\出现错误 select round(5236.555,-4,1)\\0.000 返回一个数值,舍入到指定的长度。注意返回的数值和原数值的总位数没有变化。 长度:舍入精度。如果长度为正数,则将数值舍入到长度指定的小数位数。如果长度为负数,则将数值小数点左边部分舍入到长度指定的长度。注意如果长度为负数,并且大于小数点前的数字个数,则将返回 0。如果长度为负数并且等于小数点前的数字个数且操作方式为四舍五入时,最前面的一位小于5返回0,大于等于5会导致错误出现,如果操作方法不是四舍五入时则不会出现错误,返回结果一律为0。 操作方式:默认为0遵循四舍五入,指定其他整数值则直接截断。 ceiling(数值表达式) | select ceiling(5.44)\\6 select ceiling(-8.44)\\-8 | 返回大于或等于指定数值表达式的最小整数。 floor(数值表达式) | select floor(5.44)\\5 select floor(-8.44)\\-9 | 返回小于或等于指定数值表达式的最大整数。 power(数值表达式1,数值表达式2) | select power(5,2)返回25 | 返回数值表达式1的数值表达式2次幂 sqrt(数值表达式) | select sqrt(25)\\5 | 返回数值表达式的平方根 abs(数值表达式) | select abs(-23.4)\\23.4 | 返回指定数值表达式的绝对值(正值) pi() | select pi()\\3.14159265358979 | 返回π的值
数据类型转换函数
convert(数据类型[(长度)],表达式[,样式])
select convert(nvarchar,123) \\123
select convert(nvarchar ,getdate())\\04 28 2015 10:21PM
select convert(nvarchar ,getdate(),120)\\2009-04-28 12:22:2
将一种数据类型的表达式显式转换为另一种数据类型的表达式。
长度:如果数据类型允许设置长度,可以设置长度,例如varchar(10)
样式:用于将日期类型数据转换为字符数据类型的日期格式的样式
cast(表达式 as 数据类型[(长度)])
select cast(123 as nvarchar)\\123
select N'年龄:'+cast(23 as nvarchar)\\年龄:23
将一种数据类型的表达式显式转换为另一种数据类型的表达式。
CONVERT是专对SQL Server使用的,使日期与时间值,小数之间转换具有更宽的灵活性
CAST是两种功能中更具ANSI标准的功能,即虽然更具便携性(比如,使用CAST的函数能更容易的被其它数据库软件使用),但功能相对弱一些。
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-05-16 10:57:49.700 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 时间格式转换
引用:
http://www.cnblogs.com/ATree/archive/2011/03/08/SQL_Server_2005_substring_convert.html