【澳门金沙vip】sql 日期函数getdate()和case语法

数字函数 ABS():求绝对值。 CEILING():舍入到最大整数。
FLOOR():舍入到最小整数。 ROUND():四舍五入
ROUND(A,B)A是要处理的数,B是精确到小数点后第几位 LEN():计算字符串长度
LOWER()、UPPER():转小写、大写 LTRIM():字符串左侧的空格去掉
RTRIM():字符串右侧的空格去掉 SUBSTRING(string,start_position,length)
string是待处理字符串,start_position是开始截的个数,length是截取的最大长度
日期函数 GETDATE():取得当前日期时间
DATEADD(datepart,number,date),计算增加后的日期
例:DATEADD(DAY,3,date)计算日期date后3天的日期
DATEADD(MONTH,-8,date)计算日期date前8个月的日期
DATEDIFF(datepart,startdate,enddate):计算两个日期之间的差额。
DATEPART(datepart,date):返回一个日期的特定部分 类型转换函数
CAST(expression AS data_type) CONVERT(data_type,expression)
空值处理函数
如果查询结果是空,则为第二个参数。如果不为空,则是第一个参数 select
isnull(FName,’佚名’) as 姓名from T_Employee CASE函数用法
单值判断,相当于switch case CASE expression WHEN value1 THEN
returnvalue1 WHEN value2 THEN returnvalue2 WHEN value3 THEN returnvalue3
ELSE defaultreturnvalue END

Group
by Fage Having Count(*)>1

日期函数

限制结果集行数

定义和用法GETDATE() 函数从 SQL Server 返回当前的时间和日期。

Select
top 3 * from T_Employee order by FSalary desc

语法GETDATE()实例例子 1使用下面的 SELECT 语句:

检索按照工资从高到低排序检索从第六名开始一共三个人的信息

SELECT GETDATE() AS CurrentDateTime结果:

select
top 3 * from T_Employee 

CurrentDateTime 2008-12-29 16:25:46.635

where
FNumber not in (select top 5 FNumber from T_Employee order by FSalary
desc)

注释:上面的时间部分精确到毫秒。

order
by FSalary desc

例子 2下面的 SQL 创建带有日期时间列 (OrderDate) 的 Orders 表:

CREATE TABLE Orders (OrderId int NOT NULL PRIMARY KEY,ProductName
varchar(50) NOT NULL,OrderDate datetime NOT NULL DEFAULT
GETDATE())请注意,OrderDate 把 GETDATE()
规定为默认值。结果是,当您在表中插入新行时,当前日期和时间自动插入列中。

sql
server2005后增加了Row_Number函数简化实现,用Row_Number函数也能用来分页

现在,我们希望在 Orders 表中插入一条记录:

select
*

INSERT INTO Orders (ProductName) VALUES (‘Computer’)

from

GETDATE():取得当前日期时间
DATEADD(datepart,number,date),计算增加后的日期
例:DATEADD(DAY,3,date)计算日期date后3天的日期
DATEADD(MONTH,-8,date)计算日期date前8个月的日期
DATEDIFF(datepart,startdate,enddate):计算两个日期之间的差额。
DATEPART(datepart,date):返回一个日期的特定部分

(

类型转换函数 CAST(expression AS data_type)
CONVERT(data_type,expression)

select
*,row_number() over (order by salary desc) as row_num from
T_Employee

空值处理函数
如果查询结果是空,则为第二个参数。如果不为空,则是第一个参数 select
isnull(FName,’佚名’) as 姓名from T_Employee

)as
T_EmployeeWithRowNumbers

CASE函数用法

where T_EmployeeWithRowNumbers.row_num
between 6 and 8

CASE 搜索函数计算一组布尔表达式以确定结果。 两种格式都支持可选的 ELSE
参数。

去掉数据重复

语法简单 CASE 函数:

select
distinct FDepartment from T_Employee

CASE input_expression WHEN when_expression THEN result_expression [
…n ] [ ELSE else_result_expression END

distinct是对整个结果集进行数据重复处理的,而不是针对每一个列

CASE 搜索函数:

select
distinct FDepartment,FSubCompany  from
T_Employee(distinct是针对FDepartment,FSubCompany两个列,而不是一列)

CASE WHEN Boolean_expression THEN result_expression [ …n ] [ ELSE
else_result_expression END

Union(如果重复的数据会剔除掉,union
all不会剔除重复数据)

参数input_expression

select
FName,Fage from T_TempEmployee

是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的
Microsoft SQL Server 表达式。

union

WHEN when_expression

select
FName,Fage from T_Employee

使用简单 CASE 格式时 input_expression
所比较的简单表达式。When_expression 是任意有效的 SQL Server
表达式。Input_expression 和每个 when_expression
的数据类型必须相同,或者是隐性转换。

union因为要进行重复值扫描,所以效率低,因此如果不是确定要合并重复行,那么就用union
all

n

占位符,表明可以使用多个 WHEN when_expression THEN result_expression
子句或 WHEN Boolean_expression THEN result_expression 子句。

数字函数

THEN result_expression

ABS():求绝对值

单值判断,相当于switch case CASE expression WHEN value1 THEN
returnvalue1 WHEN value2 THEN returnvalue2 WHEN value3 THEN returnvalue3
ELSE defaultreturnvalue END

CEILING():舍入到最大整数。3.33将被舍入为4,2.89将被舍入为3,-3.61将被舍入为-3

Ceiling->天花板

FLOOR():舍入到最小整数。3.33将被舍入为3,2.89将被舍入为2,-3.61将被舍入为-4

Floor->地板

ROUND():四舍五入。

Round->“半径”。Round(3.1425,2)->3.14
后面的“2”指为保留2位精度

字符串函数

LEN():计算字符串长度

LOWER(),UPPER():转小写,大写