sql计算天数.docx

上传人:b****8 文档编号:10766106 上传时间:2023-02-22 格式:DOCX 页数:15 大小:18.60KB
下载 相关 举报
sql计算天数.docx_第1页
第1页 / 共15页
sql计算天数.docx_第2页
第2页 / 共15页
sql计算天数.docx_第3页
第3页 / 共15页
sql计算天数.docx_第4页
第4页 / 共15页
sql计算天数.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

sql计算天数.docx

《sql计算天数.docx》由会员分享,可在线阅读,更多相关《sql计算天数.docx(15页珍藏版)》请在冰豆网上搜索。

sql计算天数.docx

sql计算天数

sql计算天数

SELECTdateadd(ms,-1,DATEADD(mm,DATEDIFF(m,0,getdate()),0))asmouthfirstdate,dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))asmouthlastdate

===============================最后一天=========================================

本月【数据所在服务器】最后一天:

SELECTdateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))asmouthlastdate

下月【数据所在服务器】最后一天:

SELECTdateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+2,0))asmouthlastdate

下下月【数据所在服务器】最后一天:

SELECTdateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+3,0))asmouthlastdate

下下下月【数据所在服务器】最后一天:

SELECTdateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+4,0))asmouthlastdate

下下下月【数据所在服务器】最后一天:

SELECTdateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+5,0))asmouthlastdate

下下下下月【数据所在服务器】最后一天:

SELECTdateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+6,0))asmouthlastdate

===============================第一天===========================================

本月第一天

SELECTdateadd(ms,-1,DATEADD(mm,DATEDIFF(m,0,getdate()),0))asmouthlastdate

下月第一天:

SELECTdateadd(ms,-1,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))asmouthlastdate

下下月第一天:

SELECTdateadd(ms,-1,DATEADD(mm,DATEDIFF(m,0,getdate())+2,0))asmouthlastdate

================================================================================

selectCONVERT(varchar,getdate(),120)----------------->>SQL语句

2004-09-1211:

06:

08---------------------------------->>显示结果(以下类同)

selectreplace(replace(replace(CONVERT(varchar,getdate(),120),\''-\'',\''\''),\''\'',\''\''),\'':

\'',\''\'')

20040912110608

selectCONVERT(varchar(12),getdate(),111)

2004/09/12

selectCONVERT(varchar(12),getdate(),112)

20040912

selectCONVERT(varchar(12),getdate(),102)

2004.09.12

selectCONVERT(varchar(12),getdate(),101)

09/12/2004

selectCONVERT(varchar(12),getdate(),103)

12/09/2004

selectCONVERT(varchar(12),getdate(),104)

12.09.2004

selectCONVERT(varchar(12),getdate(),105)

12-09-2004

selectCONVERT(varchar(12),getdate(),106)

12092004

selectCONVERT(varchar(12),getdate(),107)

0912,2004

selectCONVERT(varchar(12),getdate(),108)

11:

06:

08

selectCONVERT(varchar(12),getdate(),109)

091220041

selectCONVERT(varchar(12),getdate(),110)

09-12-2004

selectCONVERT(varchar(12),getdate(),111)

2007-3-23

selectCONVERT(varchar(12),getdate(),113)

120920041

selectCONVERT(varchar(12),getdate(),114)

11:

06:

08.177

设置默认值时去掉"select"单词。

--------------------------------------------------------------------------------

另附函数:

FormatDateTime(Date,vbShortDate)转化为短日期格式这个是你要的.

FromatDateTime(Date,vbLongDate)以

长日期格式显示

FormatDateTime(Date,vbLongDate)转化为长日期格式

FormatDateTime(Date,vbShortTime)转化为短时间格式

FormatDateTime(Date,vbLongTime)转化为长时间格式

=================================================================================

日期和时间函数:

SqlServer中的日期与时间函数

1.当前系统日期、时间

selectgetdate()

2.dateadd在向指定日期加上一段时间的基础上,返回新的datetime值

例如:

向日期加上2天

selectdateadd(day,2,'2004-10-15')--返回:

2004-10-1700:

00:

00.000

3.datediff返回跨两个指定日期的日期和时间边界数。

selectdatediff(day,'2004-09-01','2004-09-18')--返回:

17

4.datepart返回代表指定日期的指定日期部分的整数。

SELECTDATEPART(month,'2004-10-15')--返回10

5.datename返回代表指定日期的指定日期部分的字符串

SELECTdatename(weekday,'2004-10-15')--返回:

星期五

6.day(),month(),year()--可以与datepart对照一下

select当前日期=convert(varchar(10),getdate(),120),

当前时间=convert(varchar(8),getdate(),114)

selectdatename(dw,'2004-10-15')

select本年第多少周=datename(week,'2004-10-15'),

今天是周几=datename(weekday,'2004-10-15')

函数参数/功能

GetDate()返回系统目前的日期与时间

DateDiff(interval,date1,date2)以interval指定的方式,返回date2与date1两个日期之间的差值date2-date1

DateAdd(interval,number,date)以interval指定的方式,加上number之后的日期

DatePart(interval,date)返回日期date中,interval指定部分所对应的整数值

DateName(interval,date)返回日期date中,interval指定部分所对应的字符串名称

参数interval的设定值如下:

值缩写(SqlServer)(Access和ASP)说明

YearYyyyyy年1753~9999

QuarterQqq季1~4

MonthMmm月1~12

DayofyearDyy一年的日数,一年中的第几日1-366

DayDdd日,1-31

WeekdayDww一周的日数,一周中的第几日1-7

WeekWkww周,一年中的第几周0~51

HourHhh时0~23

MinuteMin分钟0~59

SecondSss秒0~59

MillisecondMs-毫秒0~999

 

access和asp中用date()和now()取得系统日期时间;

其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这些函数的用法也类似

举例:

1.GetDate()用于sqlserver:

selectGetDate()

2.DateDiff('s','2005-07-20','2005-7-2522:

56:

32')返回值为514592秒

DateDiff('d','2005-07-20','2005-7-2522:

56:

32')返回值为5天

3.DatePart('w','2005-7-2522:

56:

32')返回值为2即星期一(周日为1,周六为7)

DatePart('d','2005-7-2522:

56:

32')返回值为25即25号

DatePart('y','2005-7-2522:

56:

32')返回值为206即这一年中第206天

DatePart('yyyy','2005-7-2522:

56:

32')返回值为2005即2005年

 

本月的最后一天

  现在,为了获得本月的最后一天,我需

要稍微修改一下获得上个月的最后一天的语句。

修改需要给用DATEDIFF比较当前日期和“19000101”返回的时间间隔上加1。

通过加1个月,我计算出下个月的第一天,然后减去3毫秒,这样就计算出了这个月的最后一天。

这是计算本月最后一天的SQL脚本。

  Selectdateadd(ms,3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0))

 

动态SQL拼接

分类:

DATABASE_STUDY2011-10-1400:

0411人阅读评论(0)收藏举报

declare@RowCountint

declare@sqlnvarchar(500)

set@sql='selecttop'+convert(varchar,@RowCount)+'[SERIAL_NO],[MSG_NO]intoTempRecordfrom[dbo].[Temp_MsgHead]orderby[REC_DATE]'

execsp_executesql@sql

select*fromTempRecord

truncatetableTempRecord

droptableTempRecord

 

常用函数对比

分类:

DATABASE_STUDY2011-09-1422:

2738人阅读评论(0)收藏举报

ISNULL(参数1,参数2)

若参数1为空,则返回参数2

NULLIF(参数1,参数2)

若参数1和参数2不等,则返回参数1

若参数1和参数2相等,则返回NULL

例子:

ISNULL(NULLIF(字段名XX,''),'AAA')

ISNUMERIC(参数1)

判断参数1是否为数字,是数字就返回1,不是数字、空字符串、Null则返回0

---------数学函数

  1.绝对值

  S:

selectabs(-1)value

  O:

selectabs(-1)valuefromdual

  2.取整(大)

  S:

selectceiling(-1.001)value

  O:

selectceil(-1.001)valuefromdual

  3.取整(小)

  S:

selectfloor(-1.001)value

  O:

selectfloor(-1.001)valuefromdual

  4.取整(截取)

  S:

selectcast(-1.002asint)value

  O:

selecttrunc(-1.002)valuefromdual

  5.四舍五入

  S:

selectround(1.23456,4)value1.23460

  O:

selectround(1.23456,4)valuefromdual1.2346

  6.e为底的幂

  S:

selectExp

(1)value2.7182818284590451

  O:

selectExp

(1)valuefromdual2.71828182

  7.取e为底的对数

  S:

selectlog(2.7182818284590451)value1

  O:

selectln(2.7182818284590451)valuefromdual;1

  8.取10为底对数

  S:

selectlog10(10)value1

  O:

selectlog(10,10)valuefromdual;1

  9.取平方

  S:

selectSQUARE(4)value16

  O:

selectpower(4,2)valuefromdual16

  10.取平方根

  S:

selectSQRT(4)value2

  O:

selectSQRT(4)valuefromdual2

  11.求任意数为底的幂

  S:

selectpower(3,4)value81

  O:

selectpower(3,4)valuefromdual81

  12.取随机数

  S:

selectrand()value

  O:

selectsys.dbms_random.value(0,1)valuefromdual;

  13.取符号

  S:

selectsign(-8)value-1

  O:

selectsign(-8)valuefromdual-1

  14.圆周率

  S:

SELECTPI()value3.1415926535897931

  O:

不知道

  15.sin,cos,tan参数都以弧度为单位

  例如:

selectsin(PI()/2)value得到1(SQLServer)

  16.Asin,Acos,Atan,Atan2

返回弧度

  17.弧度角度互换(SQLServer,Oracle不知道)

  DEGREES:

弧度-〉角度

  RADIANS:

角度-〉弧度

  ---------数值间比较

  18.求集合最大值

  S:

selectmax(value)valuefrom

  (select1value

  union

  select-2value

  union

  select4value

  union

  select3value)a

  O:

selectgreatest(1,-2,4,3)valuefromdual

  19.求集合最小值

  S:

selectmin(value)valuefrom

  (select1value

  union

  select-2value

  union

  select4value

  union

  select3value)a

  O:

selectleast(1,-2,4,3)valuefromdual

  20.如何处理null值(F2中的null以10代替)

  S:

selectF1,IsNull(F2,10)valuefromTbl

  O:

selectF1,nvl(F2,10)valuefromTbl

--------数值间比较

  21.求字符序号

  S:

selectascii('a')value

  O:

selectascii('a')valuefromdual

  22.从序号求字符

  S:

selectchar(97)value

  O:

selectchr(97)valuefromdual

  23.连接

  S:

select'11'+'22'+'33'value

  O:

selectCONCAT('11','22')||33valuefromdual

  23.子串位置--返回3

  S:

selectCHARINDEX('s','sdsq',2)value

  O:

selectINSTR('sdsq','s',2)valuefromdual

  23.模糊子串的位置--返回2,参数去掉中间%则返回7

  S:

selectpatindex('%d%q%','sdsfasdqe')value

  O:

oracle没发现,但是instr可以通过第四霾问刂瞥鱿执问?

BR>  selectINSTR('sdsfasdqe','sd',1,2)valuefromdual返回6

  24.求子串

  S:

selectsubstring('abcd',2,2)value

  O:

selectsubstr('abcd',2,2)valuefromdual

  25.子串代替返回aijklmnef

  S:

SELECTSTUFF('abcdef',2,3,'ijklmn')value

  O:

SELECTReplace('abcdef','bcd','ijklmn')valuefromdual

  26.子串全部替换

  S:

没发现

  O:

selectTranslate('fasdbfasegas','fa','我')valuefromdual

  27.长度

  S:

len,datalength

  O:

length

  28.大小写转换lower,upper

  29.单词首字母大写

  S:

没发现

  O:

selectINITCAP('abcddsafdf')valuefromdual

  30.左补空格(LPAD的第一个参数为空格则同space函数)

  S:

selectspace(10)+'abcd'value

  O:

selectLPAD('abcd',14)valuefromdual

  31.右补空格(RPAD的第一个参数为空格则同space函数)

  S:

select'abcd'+space(10)value

  O:

selectRPAD('abcd',14)valuefromdual

  32.删除空格

  S:

ltrim,rtrim

  O:

ltrim,rtrim,trim

  33.重复字符串

  S:

selectREPLICATE('abcd',2)value

  O:

没发现

  34.发音相似性比较(这两个单词返回值一样,发音相同)

  S:

SELECTSOUNDEX('Smith'),SOUNDEX('Smythe')

  O:

SELECTSOUNDEX('Smith'),SOUNDEX('Smythe')fromdual

  SQLServer中用SELECTDIFFERENCE('Smithers','Smythers')比较soundex的差

  返回0-4,4为同音,1最高

------日期函数

  35.系统

时间

  S:

selectgetdate()value

  O:

selectsysdatevaluefromdual

  36.前后几日

  直接与整数相加减

  37.求日期

  S:

selectconvert(char(10),getdate(),20)value

  O:

selecttrunc(sysdate)valuefromdual

  selectto_char(sysdate,'yyyy-mm-dd')valuefromdual

  38.求时间

  S:

selectconvert(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 互联网

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1