`
xiaolan02
  • 浏览: 59865 次
社区版块
存档分类
最新评论

sql server 日期处理

阅读更多
使用DATEDIFF和DATEADD函数来计算日期,和本来从当前日期转换到你需要的日期的考虑方法有点不同。必须从时间间隔这个方面来考虑。DATEDIFF函数计算两个日期之间的小时、天、周、月、年等时间间隔总数。 DATEADD函数计算一个日期通过给时间间隔加减来获得一个新的日期。

实例:
一个月的第一天
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"。

本周的星期一
SELECT DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

一年的第一天
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

半夜的时间点
SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

上个月的最后一天
通过从一个月的最后一天这个例子上减去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))

本月的最后一天
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)
计算中用本月的第6天来替换当前日期使得计算可以获得这个月的第一个星期一。

去掉时分秒
declare @ datetime
set @ = getdate() --2003-7-1 10:00:00
SELECT @,DATEADD(day, DATEDIFF(day,0,@), 0)

显示星期几
select datename(weekday,getdate())

如何取得某个月的天数
declare @m int
set @m=2 --月份
select datediff(day,2003-+cast(@m as varchar)+-15 ,2003-+cast(@m+1 as varchar)+-15)

取得本月天数
select datediff(day,cast(month(GetDate()) as varchar)+-+cast(month(GetDate()) as varchar)+-15 ,cast(month(GetDate()) as varchar)+-+cast(month(GetDate())+1 as varchar)+-15)

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

判断是否闰年
SELECT case day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)))) when 28 then 平年 else 闰年 end

select case datediff(day,datename(year,getdate())+-02-01,dateadd(mm,1,datename(year,getdate())+-02-01))
when 28 then 平年 else 闰年 end

一个季度多少天
declare @m tinyint,@time smalldatetime
select @m=month(getdate())
select @m=case when @m between 1 and 3 then 1
when @m between 4 and 6 then 4
when @m between 7 and 9 then 7
else 10 end
select @time=datename(year,getdate())+-+convert(varchar(10),@m)+-01
select datediff(day,@time,dateadd(mm,3,@time))
分享到:
评论

相关推荐

    SqlServer日期处理函数

    ### SqlServer 日期处理函数详解 #### 概述 SqlServer 提供了一系列强大的日期处理函数,这些函数可以帮助开发者和数据库管理员高效地操作日期和时间数据。本文档将详细介绍几个常用的日期处理函数及其应用场景,并...

    sql server日期格式转换方法大全

    在SQL Server中,日期和时间数据类型的处理是数据库操作中的常见任务。无论是为了报表、数据分析还是用户界面展示,我们经常需要将日期格式进行转换。本文将深入探讨SQL Server中多种日期格式转换的方法。 1. `...

    sqlServer 日期类型转字符串

    ### SQL Server日期类型与字符串转换 SQL Server提供了多种日期和时间数据类型,包括`date`、`datetime`、`datetime2`、`smalldatetime`等,用于存储和操作日期和时间数据。但在某些场景下,如报表生成、日志记录或...

    SQL Server中日期问题的解决

    ### SQL Server中日期问题的解决 在Microsoft SQL Server(以下简称SQL Server)中处理日期和时间时,经常会...此外,随着SQL Server版本的不断更新,还会有更多的新特性被引入,以支持更加灵活和强大的日期处理功能。

    sqlserver中对时间日期的操作

    在SQL Server中对时间日期的操作是数据库管理与开发过程中不可或缺的一部分。这不仅涉及到对当前时间的获取、格式化,还包括了日期的计算和调整。以下将深入解析如何在SQL Server中进行时间日期的操作。 ### 一、...

    sql server提取日期的部分

    在SQL Server中,处理日期和时间是常见的任务,特别是在数据分析和报表生成中。提取日期的特定部分可以帮助我们更好地理解和组织数据。本文将详细介绍如何使用`DATEPART`和`DATENAME`这两个函数来提取日期的不同部分...

    Sql Server日期格式转换

    ### Sql Server 日期格式转换详解 在日常使用Sql Server数据库的过程中,我们经常会遇到需要对日期进行格式转换的需求。本文将详细介绍几种常见的日期格式转换方法,并通过具体的示例代码来帮助大家更好地理解和...

    SQLServer时间处理

    在SQL Server中,时间处理是数据库管理中的一个重要环节,它涉及到如何存储、操作和查询与时间相关的数据。本文将深入探讨SQL Server中的时间处理技术,包括时间数据类型的使用、时间值的转换、以及如何获取特定时间...

    SQLServer日期时间函数

    本文将详细介绍几个常用的SQL Server日期时间函数,并通过示例来说明它们的具体用法。 #### 二、常用日期时间函数详解 ##### 1. DATENAME (datepart, date) - **功能**:此函数返回表示指定日期的指定日期部分的...

    SqlServer时间日期处理函数及字符串转换

    SqlServer时间日期处理函数及字符串转换 SqlServer时间日期处理函数及字符串转换 文章分类:数据库 最近做的报表,用SqlServer2005,边做边学吧,虽然速度有些慢~

    SQL Server 日期函数的使用

    在sql server中日期的处理对于大多数人来说是一个很头疼的问题,现在这篇文档中包含了所有的日期函数以及日期显示语句,希望对你有所帮助。

    SQL Server 查询两个日期之间的所有月份

    首先,我们需要理解SQL Server中的日期处理函数。`DATEADD`函数允许我们向或从日期添加指定的时间间隔,例如月份。`MONTH`函数则用于提取日期中的月份部分。在给定的代码示例中,`@min`和`@max`分别存储了起始和结束...

    SQLServer获取2020年节假日列表.zip

    本资源"SQLServer获取2020年节假日列表.zip"正是针对这一需求提供的一套解决方案。 首先,我们来看标题"SQLServer获取2020年节假日列表",它暗示了我们将学习如何在SQL Server中创建一个存储2020年节假日的表,并且...

    sqlServer的jar包

    这个JAR包是针对SQL Server特定功能的扩展,它提供了对SQL Server特有的特性和功能的支持,如存储过程、事务管理、XML处理、大型对象(LOB)操作等。开发者可以利用这个库来充分利用SQL Server的功能,实现高级的...

    sqlserver驱动包

    此外,它还包含处理大型对象(如BLOB和CLOB)、SQL Server的日期和时间类型、以及一些高级特性(如游标、存储过程和事务管理)的类和方法。 3. msutil.jar: 这个文件主要包含一些实用工具类,用于辅助连接管理和...

    sqlserver日期相关知识.doc

    SQL Server 提供了多种方式来获取和处理日期时间数据。下面将对 SQL Server 中日期相关知识进行详细介绍。 一、获取当前日期时间 在 SQL Server 中,可以使用 GETDATE() 函数来获取当前日期时间。GETDATE() 函数...

    SQL Server各种日期计算

    在探讨SQL Server中进行日期计算的方法之前,我们必须了解SQL Server中处理日期和时间的基本函数:DATEDIFF和DATEADD。这两个函数在实际应用中非常常用,可以帮助我们得到两个日期间的时间间隔以及通过已知时间间隔...

    sqlserver 中时间为空的处理小结

    现将几种主要情况进行小结: 一、如何输入NULL值 如果不输入null值,当时间为空时,会默认写入”1900-01-01″,在业务处理时很麻烦。 ctrl+0即可输入NULL值。 二、如何在sql语句中判断为NULL的时间字段 假设表为:...

    SQL SERVER 关于日期函数(字符转日期,日期转字符串)

    SQL Server 中的日期函数是数据库管理系统中非常重要的一部分,它提供了多种方式来处理日期和时间数据。在本文中,我们将详细介绍 SQL Server 中的日期函数,包括字符转日期、日期转字符串等方面的知识点。 日期...

Global site tag (gtag.js) - Google Analytics