存储过程后跟dateadd函数为什么会报错

如题所述

如果SQL Server程序员想将表达式从一种换为另一种,他可以从SQL Server 7和2000中自带的两种功能中做出选择。在存储过程或其他情况下,我们常常需要将数据从datetime型转化成varchar型;CONVERT和CAST就可以用于这种情况。

由于SQL Server提供两种功能,因此应该选择哪种功能或应该在哪种情况下使用该功能就很容易让人困惑了。CONVERT是专对SQL Server使用的,使日期与时间值,小数之间转换具有更宽的灵活性。

CAST是两种功能中更具ANSI标准的功能,即虽然更具便携性(比如,使用CAST的函数能更容易的被其它数据库软件使用),但功能相对弱一些。不过,当小数转化为数值,并保留原始表达式中的小数数值时,仍然需要使用CAST。因此,我建议首先使用CAST,如果遇到必须使用CONVERT的情况时再使用CONVERT。

CAST和CONVERT还能联合使用,达到特殊的效果。比如,在current date下生成char变量一般使用以下方法:

SELECT CONVERT(CHAR(10), CURRENT_TIMESTAMP, 102)

(102表明使用了ANSI日期模式,即yy.mm.dd型)

然而,如果你希望将这个变量明确生成为datetime或smalldatetime变量,以此在特定的数据库栏中兼容,那么你可以使用以下语句:

SELECT CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102) AS DATETIME

返回值将是 yy.mm.dd 00:00:00(如12:00AM作为时间戳;

SQL Server Date 函数
定义和用法
DATEADD() 函数在日期中添加或减去指定的时间间隔。

语法
DATEADD(datepart,number,date)date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。

datepart 参数可以是下列的值:

datepart 缩写
å¹´ yy, yyyy
季度 qq, q
月 mm, m
年中的日 dy, y
日 dd, d
周 wk, ww
星期 dw, w
小时 hh
分钟 mi, n
秒 ss, s
毫秒 ms
微妙 mcs
纳秒 ns
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-12-12
抱什么错误了 什么数据库

存储过程后跟dateadd函数为什么会报错
DATEADD() 函数在日期中添加或减去指定的时间间隔。语法 DATEADD(datepart,number,date)date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。datepart 参数可以是下列的值:datepart 缩写 年 yy, yyyy 季度 qq, q 月 mm, m 年中的...

sql server 存储过程时间计算
DATEADD 在向指定日期加上一段时间的基础上,返回新的 datetime 值。语法 DATEADD ( datepart , number, date )参数 datepart 是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™ 识别的日期部分和缩写。日期部分 缩写 Year yy, yyyy quarter qq, q Month mm...

在sql的存储过程中,给定一个日期,怎么获得比这个日期大10天和小10天的...
SQL里有个函数:dateadd(d,-3,getdate()) ,第一个是设置那一项减少或增加,天就是D,第二个是变量,-3是三天前,+3是三天后,第三个为基础,getdate()是当前时间为基础

sql存储过程中的日期类型 当前日期减去天数得到几天前的日期
第二个参数正数往后算,负数日期往前算

...函数AddOneDate的参数DateAny为什么不需要定义呢,我换成了dateToday...
你说的这句吗 Function AddOneDate(DateAny)这个DateAny是形式参数,可以理解为特殊定义,实际上是定义了,再定义会报错。

SQL 关于时间函数select datepart 的问题
\/*-- 创建月购买数量统计存储过程:proc_buyIn_month_count --*\/ CREATE PROC proc_buyIn_month_count (startTime smalldatetime,--输入参数:查询的开始时间 endTime smalldatetime --输入参数:查询的结束时间 )AS --New --定义表变量 DECLARE Mydb_buyIn_month_count TABLE(buyTimeForYear varchar(...

SQL中去空格函数
这个好办啊,你自己写一个函数,然后调用sql中的ltrim,rtrim,然后用raplace把字段中空格都去掉,你再调用自己的函数就可以了啊。

sql语句,有的全要
DATEADD(<datepart> ,<number> ,<date>) --函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期DATEDIFF(<datepart> ,<number> ,<date>)--函数返回两个指定日期在datepart 方面的不同之处DATENAME(<datepart> , <date>) --函数以字符串的形式返回日期的指定部分DATEPART(<datepart> , <date>) ...

SQL2005存储过程导出脚本到SQL2000
你的把这3个存储过程中调用到的其他存储过程, 先执行下,然后再执行这3个存储过程。如果还不行,那把错误信息,贴出来吧。

SQL函数求出今天与2007-3-1差多少天,多少月,多少年。
用函数来实现 create function dbo.getdiff(@startdate datetime,@enddate datetime)returns varchar(32)as begin declare @cright varchar(2)set @cright = '+'declare @tmpstdate datetime,@tmpeddate datetime set @tmpstdate = @startdate set @tmpeddate = @enddate if datediff(dd,@start...

相似回答