sqldateadd?sql 中Dateadd()函数的用法
亲爱的读者们,你是否对sqldateadd和sql 中Dateadd()函数的用法的关系感到好奇?在本文中,我将深入探讨它们之间的联系,让你对此有更深刻的理解。
MSSQL的sql语句Dateadd()的问题
因为你最后的参数不对,不能是日期型的。
DateAdd() DateAdd()
返回包含一个日期的 Variant(Date),这一日期还加上了一段时间间隔。
表达式 DateAdd(timeinterval,number,date)
描述
interval必要。字符串表达式,是所要加上去的时间间隔。
number必要。数值表达式,是要加上的时间间隔的数目。其数值可以为正数(得到未来的日期),也可以为负数(得到过去的日期)。
date必要。Variant(Date)或表示日期的文字,这一日期还加上了时间间隔。
设置 interval参数,具有以下设定值:
设置描述
Year yy, yyyy年
quarter qq, q季
Month mm, m月
dayofyear dy, y一年的日数
Day dd, d日
Week wk, ww一周的日数
Hour hh小时
minute mi, n分钟
second ss, s秒
millisecond ms毫秒
说明
可以使用 DateAdd函数对日期加上或减去指定的时间间隔。例如,可以用 DateAdd来计算距今天为三十天的日期;或者计算距现在为 45分钟的时间。
为了对 date加上“日”,可以使用“一年的日数”(“y”),“日”(”d”)或“一周的日数”(”w”)。
DateAdd函数将不返回有效日期。在以下实例中将 1月31日加上一个月:
DateAdd(m, 1, 31-Jan-95)
上例中,DateAdd返回 1995年 2月 28日,而不是 1995年 2月 31日。如果 date是 1996年 1月 31日,则由于 1996年是闰年,返回值是 1996年 2月 29日。
如果计算的日期超前 100年(减去的年度超过 date中的年份),就会导致错误发生。
如果 number不是一个 Long值,则在计算时取最接近的整数值来计算。
注意 DateAdd返回值的格式由 Control Panel设置决定,而不是由传递到date参数的格式决定。
附:
number
是用来增加 datepart的值。数值表达式,设定一个日期所加上的一段期间,可为正值或负值,正值表示加(结果为>date以后的日期),负值表示减(结果为>date以前的日期)。
如果指定一个不是整数的值,则将废弃此值的小数部分。例如,如果为 datepart指定 day,为 number指定 1.75,则 date将增加 1。
date
是返回 datetime或 smalldatetime值或日期格式字符串的表达式。有关指定日期的更多信息,请参见 datetime和 smalldatetime。
如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff为 2049(默认),则 49被解释为 2049,2050被解释为 1950。为避免模糊,请使用四位数的年份。
返回类型
返回 datetime,但如果 date参数是 smalldatetime,返回 smalldatetime。
示例
此示例打印出 pubs数据库中标题的时间结构的列表。此时间结构表示当前发布日期加上 21天。
USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
GO
下面是结果集:
timeframe
---------------------------
Jul 3 1991 12:00AM
Jun 30 1991 12:00AM
Jul 21 1991 12:00AM
Jul 13 1991 12:00AM
Jun 30 1991 12:00AM
Jul 9 1991 12:00AM
Mar 14 1997 5:09PM
Jul 21 1991 12:00AM
Jul 3 1994 12:00AM
Mar 14 1997 5:09PM
Nov 11 1991 12:00AM
Jul 6 1991 12:00AM
Oct 26 1991 12:00AM
Jul 3 1991 12:00AM
Jul 3 1991 12:00AM
Nov 11 1991 12:00AM
Jul 3 1991 12:00AM
Jul 3 1991 12:00AM
(18 row(s) affected)
MYSQL上应用实例:
select* from format where add_date>="dateadd('dd',-1,'2008-05-19')"
取出2008年5月18日以后的所有数据。
ACCESS上应用实例:
select* from format where add_date>=dateadd('d',1,#2008/05/19#)
取出2008年5月20日以后的所有数据。
oracle dateadd函数
dateadd函数不是SQL才有么???楼主是不是弄错了?
在oracle中有很多关于日期的函数,如:
1、add_months()用于从一个日期值增加或减少一些月份
date_value:=add_months(date_value,number_of_months)
例:
SQL> select add_months(sysdate,12)"Next Year" from dual;
Next Year
----------
13-11月-04
SQL> select add_months(sysdate,112)"Last Year" from dual;
Last Year
----------
13-3月-13
SQL>
2、current_date()返回当前会放时区中的当前日期
date_value:=current_date
SQL> column sessiontimezone for a15
SQL> select sessiontimezone,current_date from dual;
SESSIONTIMEZONE CURRENT_DA
-------------------------
+08:00 13-11月-03
SQL> alter session set time_zone='-11:00'
2/
会话已更改。
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
---------------------------------------------------
-11:00 12-11月-03 04.59.13.668000下午-11:
00
SQL>
3、current_timestamp()以timestamp with time zone数据类型返回当前会放时区中的当前日期
timestamp_with_time_zone_value:=current_timestamp([timestamp_precision])
SQL> column sessiontimezone for a15
SQL> column current_timestamp format a36
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
---------------------------------------------------
+08:00 13-11月-03 11.56.28.160000上午+08:
00
SQL> alter session set time_zone='-11:00'
2/
会话已更改。
SQL> select sessiontimezone,current_timestamp from dual;
SESSIONTIMEZONE CURRENT_TIMESTAMP
---------------------------------------------------
-11:00 12-11月-03 04.58.00.243000下午-11:
00
SQL>
4、dbtimezone()返回时区
varchar_value:=dbtimezone
SQL> select dbtimezone from dual;
DBTIME
------
-07:00
SQL>
5、extract()找出日期或间隔值的字段值
date_value:=extract(date_field from [datetime_value|interval_value])
SQL> select extract(month from sysdate)"This Month" from dual;
This Month
----------
11
SQL> select extract(year from add_months(sysdate,36))"3 Years Out" from dual;
3 Years Out
-----------
2006
SQL>
6、last_day()返回包含了日期参数的月份的最后一天的日期
date_value:=last_day(date_value)
SQL> select last_day(date'2000-02-01')"Leap Yr?" from dual;
Leap Yr?
----------
29-2月-00
SQL> select last_day(sysdate)"Last day of this month" from dual;
Last day o
----------
30-11月-03
SQL>
7、localtimestamp()返回会话中的日期和时间
timestamp_value:=localtimestamp
SQL> column localtimestamp format a28
SQL> select localtimestamp from dual;
LOCALTIMESTAMP
----------------------------
13-11月-03 12.09.15.433000
下午
SQL> select localtimestamp,current_timestamp from dual;
LOCALTIMESTAMP CURRENT_TIMESTAMP
----------------------------------------------------------------
13-11月-03 12.09.31.006000 13-11月-03 12.09.31.006000下午+08:
下午 00
SQL> alter session set time_zone='-11:00';
会话已更改。
SQL> select localtimestamp,to_char(sysdate,'DD-MM-YYYY HH:MI:SS AM')"SYSDATE" from dual;
LOCALTIMESTAMP SYSDATE
----------------------------------------------------
12-11月-03 05.11.31.259000 13-11-2003 12:11:31下午
下午
SQL>
8、months_between()判断两个日期之间的月份数量
number_value:=months_between(date_value,date_value)
SQL> select months_between(sysdate,date'1971-05-18') from dual;
MONTHS_BETWEEN(SYSDATE,DATE'1971-05-18')
----------------------------------------
389.855143
SQL> select months_between(sysdate,date'2001-01-01') from dual;
MONTHS_BETWEEN(SYSDATE,DATE'2001-01-01')
----------------------------------------
34.4035409
SQL>
9、next_day()给定一个日期值,返回由第二个参数指出的日子第一次出现在的日期值(应返回相应日子的名称字符串)
sql 中Dateadd()函数的用法
DATEADD
在向指定日期加上一段时间的基础上,返回新的 datetime值。
语法
DATEADD( datepart, number, date)
参数
datepart
是规定应向日期的哪一部分返回新值的参数。下表列出了 Microsoft® SQL Server™识别的日期部分和缩写。
日期部分缩写
Year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
number
是用来增加 datepart的值。如果指定一个不是整数的值,则将废弃此值的小数部分。例如,如果为 datepart指定 day,为 number指定 1.75,则 date将增加 1。
date
是返回 datetime或 smalldatetime值或日期格式字符串的表达式。有关指定日期的更多信息,请参见 datetime和 smalldatetime。
如果您只指定年份的最后两位数字,则小于或等于"两位数年份截止期"配置选项的值的最后两位数字的数字所在世纪与截止年所在世纪相同。大于该选项的值的最后两位数字的数字所在世纪为截止年所在世纪的前一个世纪。例如,如果 two digit year cutoff为 2049(默认),则 49被解释为 2049,2050被解释为 1950。为避免模糊,请使用四位数的年份。
返回类型
返回 datetime,但如果 date参数是 smalldatetime,返回 smalldatetime。
示例
此示例打印出 pubs数据库中标题的时间结构的列表。此时间结构表示当前发布日期加上 21天。
USE pubs
GO
SELECT DATEADD(day, 21, pubdate) AS timeframe
FROM titles
GO
下面是结果集:
timeframe
---------------------------
Jul 3 1991 12:00AM
Jun 30 1991 12:00AM
Jul 21 1991 12:00AM
Jul 13 1991 12:00AM
Jun 30 1991 12:00AM
Jul 9 1991 12:00AM
Mar 14 1997 5:09PM
Jul 21 1991 12:00AM
Jul 3 1994 12:00AM
Mar 14 1997 5:09PM
Nov 11 1991 12:00AM
Jul 6 1991 12:00AM
Oct 26 1991 12:00AM
Jul 3 1991 12:00AM
Jul 3 1991 12:00AM
Nov 11 1991 12:00AM
Jul 3 1991 12:00AM
Jul 3 1991 12:00AM
(18 row(s) affected)
请参见
好了,文章到此结束,希望可以帮助到大家。