热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SQLServer各种日期盘算方法之一

通常,你需要获得当前日期和盘算一些其他的日期,例如,你的程序可能需要判定一个月的第一天或者最后一天。你们大部分人大概都知道怎样把日期进行分割(年、月、日等),然后

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

  在应用本文中的例子之前,你必需留心以下的标题。大部分可能不是所有例子在不同的机器上履行的成果可能不一样,这完整由哪一天是一个星期的第一天这个设置决定。第一天(DATEFIRST)设定决定了你的系统应用哪一天作为一周的第一天。所有以下的例子都是以星期天作为一周的第一天来建立,也就是第一天设置为7。假如你的第一天设置不一样,你可能需要调剂这些例子,使它和不同的第一天设置相符合。你可以通过@@DATEFIRST函数来检查第一天设置。
  
  为了懂得这些例子,我们先复习一下DATEDIFF和DATEADD函数。DATEDIFF函数盘算两个日期之间的小时、天、周、月、年等时间间隔总数。DATEADD函数盘算一个日期通过给时间间隔加减来获得一个新的日期。要懂得更多的DATEDIFF和DATEADD函数以及时间间隔可以浏览微软联机帮助。
  
  应用DATEDIFF和DATEADD函数来盘算日期,和本来从当前日期转换到你需要的日期的考虑方法有点不同。你必需从时间间隔这个方面来考虑。比如,从当前日期到你要得到的日期之间有多少时间间隔,或者,从今天到某一天(比如1900-1-1)之间有多少时间间隔,等等。懂得怎样着眼于时间间隔有助于你轻松的懂得我的不同的日期盘算例子。
  
  一个月的第一天
  
  第一个例子,我将告诉你如何从当前日期往这个月的最后一天。请留心:这个例子以及这篇文章中的其他例子都将只应用DATEDIFF和DATEADD函数来盘算我们想要的日期。每一个例子都将通过盘算但前的时间间隔,然落后行加减来得到想要盘算的日期。
  
  这是盘算一个月第一天的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()函数为了返回时间值截掉时间部分,就会考虑到当前日期是不是在半夜。假如这样,这个例子应用DATEDIFF和DATEADD函数来获得半夜的时间点。
  
  SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)
  
  深进DATEDIFF和DATEADD函数盘算
  
  你可以明白,通过应用简略的DATEDIFF和DATEADD函数盘算,你可以发明很多不同的可能有意义的日期。
  
  目前为止的所有例子只是仅仅盘算当前的时间和“1900-01-01”之间的时间间隔数目,然后把它加到“1900-01-01”的时间间隔上来盘算出日期。假定你修正时间间隔的数目,或者应用不同的时间间隔来调用DATEADD函数,或者减往时间间隔而不是增加,那么通过这些小的调剂你可以发明和多不同的日期。
  
  这里有四个例子应用另外一个DATEADD函数来盘算最后一天来分辨调换DATEADD函数前后两个时间间隔。




推荐阅读
  • 本文详细探讨了不同SQL数据库管理系统(DBMS)在限制输出结果、拼接字段和日期时间处理方面的函数差异。通过具体示例,帮助读者理解并掌握如何在不同DBMS中实现相同功能。 ... [详细]
  • 本文详细介绍了IBM DB2数据库在大型应用系统中的应用,强调其卓越的可扩展性和多环境支持能力。文章深入分析了DB2在数据利用性、完整性、安全性和恢复性方面的优势,并提供了优化建议以提升其在不同规模应用程序中的表现。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 本文详细介绍了HTML中标签的使用方法和作用。通过具体示例,解释了如何利用标签为网页中的缩写和简称提供完整解释,并探讨了其在提高可读性和搜索引擎优化方面的优势。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 使用C#开发SQL Server存储过程的指南
    本文介绍如何利用C#在SQL Server中创建存储过程,涵盖背景、步骤和应用场景,旨在帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 本文探讨了适用于Spring Boot应用程序的Web版SQL管理工具,这些工具不仅支持H2数据库,还能够处理MySQL和Oracle等主流数据库的表结构修改。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 如何在PostgreSQL中查看数据表
    本文将指导您使用pgAdmin工具连接到PostgreSQL数据库,并展示如何浏览和查找其中的数据表。通过简单的步骤,您可以轻松访问所需的表结构和数据。 ... [详细]
author-avatar
jimmy岁月_929
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有