Sql server 的表值函数是返回一个Table类型,table类型相当与一张存储在内存中的一张虚拟表。
实现表值函数很简单:
下面是一个不带输入参数的表值函数
create function tvpoints()
returns table
as
return
(
select * from tb_users
);
这个表值函数数查询所有用户表的数据
对于多语句表值函数,在 BEGIN...END 语句块中定义的函数体包含一系列 Transact-SQL 语句,这些语句可生成行并将其插入将返回的表中。
以下示例创建了一个表值函数.
create function tvpoints()
returns @points table (x float, y float)
as begin
insert @points values(1,2);
insert @points values(3,4);
return;
end
查询表值函数跟查询普通表一样
select * from tvpoints()
返回的是一张表
带输入参数的表值函数
create function tvpoints2(@x AS int,@y as int)
returns @points table (x float, y float)
as begin
insert @points values(@x,@y);
return;
end
SQL NOW() 函数取得当日的数据 在NOW ( )函数返回当前系统日期和时间。 SQL 标量函数----->日期函数 day() 、month()、year()、DATEADD()、ATEDIFF()、DATENAME()、DATEPART() GETDATE() 执行实例(表:life_unite_product 有createtime时间字段) select day(createtime) from life_unite_product --取时间字段的天值 select month(createtime) from life_unite_product --取时间字段的月值 select year(createtime) from life_unite_product --取时间字段的年值 select datepart(yy,createtime) from life_unite_product --取时间字段的年值 select datepart(qq,createtime) from life_unite_product --取时间字段的季度值 select datepart(mm,createtime) from life_unite_product --取时间字段的月值 select datepart(dy,createtime) from life_unite_product --取时间字段是那年的第几天 select datepart(dd,createtime) from life_unite_product --取时间字段的天值 select datepart(wk,createtime) from life_unite_product --取时间字段是那年的第几个星期 select datepart(dw,createtime) from life_unite_product --取时间字段是那年的那个星期的第几个工作日(工作日从星期日开算) select datepart(hh,createtime) from life_unite_product --取时间字段的小时值 select datepart(mi,createtime) from life_unite_product --取时间字段的分钟值 select datepart(ss,createtime) from life_unite_product --取时间字段的秒值 select datepart(ms,createtime) from life_unite_product --取时间字段的毫秒值 select dateadd(yy,-1,createtime) from life_unite_product ----取时间字段(年份被减1了) select dateadd(mm,3,createtime) from life_unite_product ----取时间字段(月份被加3了) select dateadd(dd,1,createtime) from life_unite_product ----取时间字段(日被加1了) select DATEDIFF(yy,createtime,getdate()) from life_unite_product --与当前日期的年份差 select DATEDIFF(mm,createtime,getdate()) from life_unite_product --与当前日期的月份差 select DATEDIFF(dd,createtime,getdate()) from life_unite_product --与当前日期的日数差 select DATEDIFF(mi,createtime,getdate()) from life_unite_product --与当前日期的分钟数差 select datename(yy,createtime) from life_unite_product --取时间字段的年值 select datename(mm,createtime) from life_unite_product --取时间字段的月值 select datename(dd,createtime) from life_unite_product --取时间字段的天值 select getdate() --取当前时间 日期函数 1、day(date_expression) 返回date_expression中的日期值 2、month(date_expression) 返回date_expression中的月份值 3、year(date_expression) 返回date_expression中的年份值 4、DATEADD() DATEADD (, , ) 返回指定日期date 加上指定的额外日期间隔number 产生的新日期。参数“datepart” 取值如下: 5、DATEDIFF() DATEDIFF (, , ) 返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。 6、DATENAME() DATENAME (, ) 以字符串的形式返回日期的指定部分此部分。由datepart 来指定。 7、DATEPART() DATEPART ( datepart , date ) 以整数值的形式返回日期的指定部分。此部分由datepart 来指定。 DATEPART (dd, date) 等同于DAY (date) DATEPART (mm, date) 等同于MONTH (date) DATEPART (yy, date) 等同于YEAR (date) 下表列出了 datepart 选项以及 SQL Server Compact Edition 所识别的缩写: 日期部分 缩写 年份 yy、yyyy 季度 qq、q 月份 mm、m 每年的某一日 dy、y 日期 dd、d 星期 wk、ww 工作日* dw 小时 hh 分钟 mi、n 秒 ss、s 毫秒 ms 8、GETDATE() 以DATETIME 的缺省格式返回系统当前的日期和时间 日期函数用来操作DATETIME 和SMALLDATETIME 类型的数据,执行算术运算。与其它函数一样,可以在Select 语句的Select 和Where 子句以及表达式中使用日期函数。其使用方法如下: 日期函数参数,其中参数个数应不同的函数而不同。 ·DAY() DAY() 函数语法如下: DAY (<date_expression>) DAY() 函数返回date_expression 中的日期值。 ·MONTH() MONTH() 函数语法如下: MONTH (<date_expression>) MONTH() 函数返回date_expression 中的月份值。 与DAY() 函数不同的是,MONTH() 函数的参数为整数时,一律返回整数值1,即SQL Server 认为其是1900 年1 月。 ·YEAR() YEAR() 函数语法如下: YEAR (<date_expression>) YEAR() 函数返回date_expression 中的年份值。 提醒:在使用日期函数时,其日期值应在1753年到9999年之间,这是SQL Server系统所能识别的日期范围,否则会出现错误。 ·DATEADD() DATEADD() 函数语法如下: DATEADD (<datepart>, <number>, <date>) DATEADD() 函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期。参数“datepart” 在日期函数中经常被使用,它用来指定构成日期类型数据的各组件,如年、季、月、日、星期等。其取值如表4-9 所示: ·DATEDIFF() DATEDIFF() 函数语法如下: DATEDIFF() (<datepart>, <date1>, <date2>) DATEDIFF() 函数返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。针对不同的datepart, DATEDIFF()函数所允许的最大差距值不一样,如:datepart 为second 时,DATEDIFF() 函数所允许的最大差距值为68: 年datepart 为millisecond 时,DATEDIFF() 函数所允许的最大差距值为24 天20 小时30 分23 秒647 毫秒。 ·DATENAME() DATENAME() 函数语法如下: DATENAME (<datepart>, <date)> DATENAME() 函数以字符串的形式返回日期的指定部分此部分。由datepart 来指定。 ·DATEPART() DATEPART() 函数语法如下: DATEPART (<datepart>, <date>) DATEPART() 函数以整数值的形式返回日期的指定部分。此部分由datepart 来指定。 DATEPART (dd, date) 等同于DAY (date) DATEPART (mm, date) 等同于MONTH (date) DATEPART (yy, date) 等同于YEAR (date) ·GETDATE() GETDATE() 函数语法如下: GETDATE() GETDATE() 函数以DATETIME 的缺省格式返回系统当前的日期和时间,它常作为其它函数或命令的参数使用。 |