`

sql server中常用SQL时间函数

阅读更多

常用SQL时间函数

--基于时间SQL函数--

 

getdate() --返回当前系统日期和时间。

 

DateAdd --在向指定日期加上一段时间的基础上,返回新的 datetime 值。

 

DATEADD ( datepart , number, date )

--例:向当天的时间增加5

select dateadd(dd,5,getdate())

 

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

DATEDIFF ( datepart , startdate , enddate )

--例:返回2005-01-01与当天有多少天

select datediff(dd,'2005-01-01',getdate())

 

--把时间字段的数据变为年月

Select Convert(Varchar(6),GetDate(),112)

 

--字符串变时间

select convert(datetime,left(@t,len(@t)-4)+':'+left(right(@t,4),2)+':'+right(@t,2))

 

ISDATE --确定输入表达式是否为有效的日期

 

DATEPART --返回代表指定日期的指定日期部分的整数

DATEPART ( datepart , date )

--如:返回当前是几月

select datepart(mm,getdate())

 

DATENAME --返回代表指定日期的指定日期部分的字符串

 

--datepart ,datename的区别:前者返回是整数,后者返回是字符串。

 

 

sql时间函数详解

1. 当前系统日期、时间

select getdate()

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

例如:向日期加上2

select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000

 

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

select datediff(day,'2004-09-01','2004-09-18') --返回:17

 

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

SELECT DATEPART(month, '2004-10-15') --返回 10

 

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

SELECT datename(weekday, '2004-10-15') --返回:星期五

 

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

 

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

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

 

select datename(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的设定值如下:

 

写(Sql Server Access ASP 说明

Year Yy yyyy 1753 ~ 9999

Quarter Qq q 1 ~ 4

Month Mm m 1 ~ 12

Day of year Dy y 一年的日数,一年中的第几日 1-366

Day Dd d 日,1-31

Weekday Dw w 一周的日数,一周中的第几日 1-7

Week Wk ww 周,一年中的第几周 0 ~ 51

Hour Hh h 0 ~ 23

Minute Mi n 分钟0 ~ 59

Second Ss s 0 ~ 59

Millisecond Ms - 毫秒 0 ~ 999

 

access asp 中用date()now()取得系统日期时间;其中DateDiff,DateAdd,DatePart也同是能用于Accessasp中,这些函数的用法也类似

 

举例:

1.GetDate() 用于sql server :select GetDate()

 

2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592

DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5

 

3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期一(周日为1,周六为7)

DatePart('d','2005-7-25 22:56:32')返回值为 2525

DatePart('y','2005-7-25 22:56:32')返回值为 206即这一年中第206

DatePart('yyyy','2005-7-25 22:56:32')返回值为 20052005

 

SQL Server DATEPART() 函数返回 SQLServer datetime 字段的一部分。

 

SQL Server DATEPART() 函数的语法是:

DATEPART(portion, datetime)

其中 datetime SQLServer datetime 字段和部分的名称是下列之一: Ms for Milliseconds

Yy for Year

Qq for Quarter of the Year

Mm for Month

Dy for the Day of the Year

Dd for Day of the Month

Wk for Week

Dw for the Day of the Week

Hh for Hour

Mi for Minute

Ss for Second

 

详细的说明:

 

通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后仅仅用分割出来的年、月、日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADDDATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期。

在使用本文中的例子之前,你必须注意以下的问题。大部分可能不是所有例子在不同的机器上执行的结果可能不一样,这完全由哪一天是一个星期的第一天这个设置决定。第一天(DATEFIRST)设定决定了你的系统使用哪一天作为一周的第一天。所有以下的例子都是以星期天作为一周的第一天来建立,也就是第一天设置为7。假如你的第一天设置不一样,你可能需要调整这些例子,使它和不同的第一天设置相符合。你可以通过@@DATEFIRST函数来检查第一天设置。

 

为了理解这些例子,我们先复习一下DATEDIFFDATEADD函数。DATEDIFF函数计算两个日期之间的小时、天、周、月、年等时间间隔总数。DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期。要了解更多的DATEDIFFDATEADD函数以及时间间隔可以阅读微软联机帮助。

 

使用DATEDIFFDATEADD函数来计算日期,和本来从当前日期转换到你需要的日期的考虑方法有点不同。你必须从时间间隔这个方面来考虑。比如,从当前日期到你要得到的日期之间有多少时间间隔,或者,从今天到某一天(比如1900-1-1)之间有多少时间间隔,等等。理解怎样着眼于时间间隔有助于你轻松的理解我的不同的日期计算例子。

 

一个月的第一天

 

第一个例子,我将告诉你如何从当前日期去这个月的最后一天。请注意:这个例子以及这篇文章中的其他例子都将只使用DATEDIFFDATEADD函数来计算我们想要的日期。每一个例子都将通过计算但前的时间间隔,然后进行加减来得到想要计算的日期。

 

这是计算一个月第一天的SQL 脚本:

SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

 

我们把这个语句分开来看看它是如何工作的。最核心的函数是getdate(),大部分人都知道这个是返回当前的日期和时间的函数。下一个执行的函数DATEDIFF(mm,0,getdate())是计算当前日期和“1900-01-01 00:00:00.000”这个日期之间的月数。记住:时期和时间变量和毫秒一样是从“1900-01-01 00:00:00.000”开始计算的。这就是为什么你可以在DATEDIFF函数中指定第一个时间表达式为“0”。下一个函数是DATEADD,增加当前日期到“1900-01-01”的月数。通过增加预定义的日期“1900-01-01”和当前日期的月数,我们可以获得这个月的第一天。另外,计算出来的日期的时间部分将会是“00:00:00.000”

 

这个计算的技巧是先计算当前日期到“1900-01-01”的时间间隔数,然后把它加到“1900-01-01”上来获得特殊的日期,这个技巧可以用来计算很多不同的日期。下一个例子也是用这个技巧从当前日期来产生不同的日期。

 

 

本周的星期一

 

这里我是用周(wk)的时间间隔来计算哪一天是本周的星期一。

 

SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

 

一年的第一天

 

现在用年(yy)的时间间隔来显示这一年的第一天。

 

SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

 

季度的第一天

 

假如你要计算这个季度的第一天,这个例子告诉你该如何做。

 

SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

 

当天的半夜

 

曾经需要通过getdate()函数为了返回时间值截掉时间部分,就会考虑到当前日期是不是在半夜。假如这样,这个例子使用DATEDIFFDATEADD函数来获得半夜的时间点。

 

SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

 

深入DATEDIFFDATEADD函数计算

 

你可以明白,通过使用简单的DATEDIFFDATEADD函数计算,你可以发现很多不同的可能有意义的日期。

 

目前为止的所有例子只是仅仅计算当前的时间和“1900-01-01”之间的时间间隔数量,然后把它加到“1900-01-01”的时间间隔上来计算出日期。假定你修改时间间隔的数量,或者使用不同的时间间隔来调用DATEADD函数,或者减去时间间隔而不是增加,那么通过这些小的调整你可以发现和多不同的日期。

 

这里有四个例子使用另外一个DATEADD函数来计算最后一天来分别替换DATEADD函数前后两个时间间隔。

 

上个月的最后一天

 

这是一个计算上个月最后一天的例子。它通过从一个月的最后一天这个例子上减去3毫秒来获得。有一点要记住,在Sql Server中时间是精确到3毫秒。这就是为什么我需要减去3毫秒来获得我要的日期和时间。

 

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

 

计算出来的日期的时间部分包含了一个Sql Server可以记录的一天的最后时刻(“23:59:59:997”)的时间。

 

去年的最后一天

 

连接上面的例子,为了要得到去年的最后一天,你需要在今年的第一天上减去3毫秒。

 

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))

 

本月的最后一天

 

现在,为了获得本月的最后一天,我需要稍微修改一下获得上个月的最后一天的语句。修改需要给用DATEDIFF比较当前日期和“1900-01-01”返回的时间间隔上加1。通过加1个月,我计算出下个月的第一天,然后减去3毫秒,这样就计算出了这个月的最后一天。这是计算本月最后一天的SQL脚本。

 

SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

 

本年的最后一天

 

你现在应该掌握这个的做法,这是计算本年最后一天脚本

 

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))

 

本月的第一个星期一

 

好了,现在是最后一个例子。这里我要计算这个月的第一个星期一。这是计算的脚本。

 

select DATEADD(wk, DATEDIFF(wk,0,

dateadd(dd,6-datepart(day,getdate()),getdate())), 0)

 

在这个例子里,我使用了“本周的星期一”的

分享到:
评论

相关推荐

    sqlserver中常用函数

    ### SQL Server 中常用函数详解 在SQL Server中,掌握常用函数是进行高效数据库操作的关键。本文将详细介绍SQL Server中的一些重要函数,特别是字符串处理相关的函数,帮助读者更好地理解和运用这些功能强大的工具...

    sql server常用函数大全下载

    总的来说,这份"SQLServer2005常用函数大全及个人毕生收藏.CHM"资源将帮助你深入理解SQL Server 2005中的函数用法,提升你的SQL编程技能,从而更好地管理和操作数据库。无论是初学者还是经验丰富的开发者,都应该...

    SQLServer2000常用函数大全(经典)

    本资源"SQLServer2000常用函数大全(经典)"显然是一个综合性的教程,旨在帮助用户熟悉并掌握SQL Server 2000中的主要函数。以下是一些关键的SQL Server 2000函数及其应用: 1. **聚合函数**: - `COUNT()`:返回...

    sqlserver时间函数

    时间函数,sqlserver,标签系统标签系统标签系统标签系统

    SQLServer和Oracle常用函数对比.txt

    本文将对SQLServer与Oracle数据库系统中常用的数学与字符串处理函数进行详细的对比分析。通过具体的示例和解释,帮助读者更好地理解两种数据库管理系统在处理相似需求时的不同实现方式。 #### 数学函数 1. **...

    SQLServer2000常用函数大全(经典).chm

    本资料"SQLServer 2000常用函数大全(经典).chm"涵盖了SQL Server 2000中的各种常见函数,旨在帮助用户深入理解和熟练运用这些函数。 1. **内置函数**: - **数值函数**:如ABS()用于返回绝对值,CEILING()返回大于...

    SQLServer2000常用函数大全

    这个资料包"SQLServer2000常用函数大全"涵盖了日期处理、自动编号以及存储过程和函数编写的相关例程,旨在帮助用户更好地理解和运用这些功能。 1. **日期处理函数**: - `GETDATE()`:返回当前系统的日期和时间。 ...

    SQLServer2000常用函数大全及个人收藏

    SQLServer2000常用函数大全及个人收藏SQLServer2000常用函数大全及个人收藏SQLServer2000常用函数大全及个人收藏SQLServer2000常用函数大全及个人收藏SQLServer2000常用函数大全及个人收藏SQLServer2000常用函数大全...

    SQLServer2000常用函数大全-经典

    这份“SQLServer2000常用函数大全-经典”压缩包文件,显然是一份全面的资源,包含了SQL Server 2000中广泛使用的各种函数及其经典应用实例,对初学者和专业人士都有很高的学习价值。 首先,我们要了解SQL Server ...

    SqlServer自定义多参数聚合函数实例代码

    标题提到的"SqlServer自定义多参数聚合函数实例代码"就是针对这种情况提供的一种解决方案。 自定义聚合函数通常通过两种方式实现:T-SQL(Transact-SQL)或CLR(Common Language Runtime)。T-SQL方式适用于简单的...

    sqlserver snowflake 函数

    使用c# 编写的 sqlserver udf 雪花函数 编译环境为 .net framework 4.5 目标数据库为 sqlserver2012 实际可以在 sqlserver2012-2019 上发布使用 注: 1. 需要开启多个实例权限 2. 需要开启单数据库信任 3. 该程序...

    sql server常用函数大全

    SQL Server 常用函数大全 本文档总结了 SQL Server 中常用的数学函数、字符串函数和其他函数,包括绝对值、取整、四舍五入、幂函数、对数函数、平方根函数、随机数函数、符号函数、数学常数函数、圆周率、反三角...

    SQLServer中的常用函数.doc

    - `NOW()`:返回当前的日期和时间(在某些数据库系统中,如MySQL,但在SQL Server中没有此函数,应使用`GETDATE()`)。 这些函数极大地丰富了我们在SQL Server中处理数据的能力,可以根据实际需求灵活运用。当然,...

    sql server和oracle中常用函数的比较

    本文将深入探讨SQL Server和Oracle中常用函数的比较,旨在帮助开发者更好地理解和选择适合自己需求的函数。以下是对给定内容中提及的SQL Server与Oracle函数的详细对比: ### 数学函数 1. **绝对值函数** - **SQL...

    sqlserver实现Oracle中Lpad和Rpad函数

    sqlserver实现Oracle中Lpad和Rpad函数

    SQLServer和Oracle的常用函数对比

    本文将基于给定文件信息,深入探讨和对比SQLServer与Oracle中的一些常用函数,这些函数涵盖了数学运算、数值处理、字符串操作等多个方面,对于数据库开发者和管理员而言,掌握这些函数的使用方法是提升工作效率的...

Global site tag (gtag.js) - Google Analytics