SQL SEVER 元年是1900年
用SQL语句求 本月第一天,怎么写?
可以这样写:
SELECT DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0);
按照日期函数DATEDIFF的定义,第二个参数是开始日期,第三个参数是结束日期,那么在这里,0是什么意思?
好像在哪里看过,说日期类型,本质上也是个数值,那么在这里写0也不会有错。问题是,0是哪个日子?
SELECT CAST(0 AS DATETIME)
得到的结果是:1900-01-01 00:00:00.000
原来,0就是SQL SERVER的元年。因此,
SELECT DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0);
的意思就是,先求得今天距离元年的月份,然后用元年 + 这个相距月份,得到的日期,就是本月的第一天。
与此类似,本周星期一是
SELECT DATEADD(wk, DATEDIFF(wk,0,GETDATE()),0);
来个复杂一点的,求本月第一周星期一呢?
--本月第一天
DECLARE @firstday DATETIME = DATEADD(mm,DATEDIFF(mm,0,GETDATE()),0);
--本月第七天
DECLARE @sevenday DATETIME = DATEADD(dd,6,@firstday);
--本月第一周星期一
SELECT DATEADD(wk,DATEDIFF(wk,0,@sevenday),0);
为什么最后要用第7天来求?
假如本月第1天是周一,那么第7天是周日,是同一周;
假如本月第1天是周日,那么第7天是周六,跨了一周,周一位于第7天所在周;
两个极端情况都考虑了,其他的更清楚,就是说,本月第一周的周一,必然位于本月第7天所在的这个星期里。
SQL SEVER 元年是1900年的更多相关文章
- SQL Sever查询语句集锦
一. 简单查询简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的表或视图.以及搜索条件等. 例如,下面的语句查询testtable表中姓名为“ ...
- SQL Sever无法打开链接对话框,未将对象引用设置到对象的实例。(AppIDPackage)
前几天刚做完系统,先装的是SQL Sever2008,装完后还试了一下,OK~没问题,然后就继续装VS2012等一些软件.搞到很晚没有继续试试就睡了,第二天运行SSMS出问题了..(如图 1.0 所示 ...
- 3-1创建Sql Sever数据库登录名
登录名:连接Sql Sever 服务器 数据库用户名: Sql Sever 的使用者 每个用来登录Sql Sever 的账户都是一个用户. 同一个数据库可以拥有多个用户,每一个用户也同时可以访问多个数 ...
- 1-03 Sql Sever 的身份验证模式
身份验证分为: 1:Windows身份验证. 1:Sql Sever身分验证. 每种验证的具体方式: 1Windows的验证方式 点击下拉框,有这两种验证方式,Windows验证只需要启动服务即可. ...
- 1-02 启动和停止Sql Sever的服务
启动Sql Sever服务的三种方式 1:后台启动服务. 2:Sql Sever配置管理员启动服务. 3:在运行窗口中使用命令启动和停止服务: 启动:net start mssqlsever. 停止 ...
- 【SQL Sever】实现SQL Sever的发布。订阅。 双机热备
实现SQL Sever的发布和订阅 最大的好处就是: 可以实现读写分离,增删改操作在主数据库服务器上进行,查询在备份数据库服务器上进行.一方面提高软件执行效率,另一方面也减轻主库压力. 本次实现发布 ...
- 【SQL Sever】将SQL Sever中的一个数据表的数据导出为insert语句
例如:这SQL Sever中的一张数据表,想要将这张数据表中的数据 转化成一个一个的insert语句存储在txt的文档中,那么不论走到那里这个insert语句一执行,我们就能将这个数据表中的数据 ...
- sql Sever的存储过程转换为mysql的
总体来说,sql sever和Mysql的存储过程的思路都是一样的,但是在语法和结构上还是有很大的区别的.1. 在mysql中写存储过程所有的dbo都要去掉.2. 每一个sql语句后面都需要加上:否则 ...
- SQL Server数据库(SQL Sever语言 CRUD)
使用SQL Sever语言进行数据库的操作 常用关键字identity 自增长primary key 主键unique 唯一键not null 非空references 外键(引用) 在使用查询操作数 ...
随机推荐
- Android布局需要知道的基础知识
eclipse配置环境变量: 1.在 eclipse 中的 Window --> preferences --> Android(安装了ADT的前提下才能看到Android) --> ...
- js-内置对象及相关语法
1:如图(视频截取的) this指的是当前标签的对象. var ary=new Array("mark","jay","leslie"); ...
- 省市区县的sql语句——省
/*SQLyog v10.2 MySQL - 5.5.48 : Database - 省市县****************************************************** ...
- SQL server基本语法
此处源于一个基本的SQL Server试题,基本上涵盖了SQL Server的全部基本语法,粘贴在此处,权当分享 --1. 创建TestDB数据库 create database TestDB; ...
- js 检查内容是否为空
var NoViods = document.getElementsByClassName("NoVoid"); ; i < NoViods.length; i++) { i ...
- django分页功能,templatetags的应用
django 将不会将得到的html代码自动转化 from django.utils.html import format_html html =''' <a href='http://www. ...
- Apex语言(九)类的方法
1.方法 方法是对象的行为.如下表: 看书,编程,打球就是方法. 2.创建方法 [格式] 访问修饰符 返回值类型 方法名(形式参数列表){ 方法体; } 访问修饰符:可以为类方法指定访问级别. 例如, ...
- luogu P4719 【模板】动态 DP 矩阵乘法 + LCT
方法二:LCT+矩阵乘法 上文中,我们用线段树来维护重链上的各种矩阵转移. 第二种方法是将树链剖分替换为动态树. 我们知道,矩阵乘法 $\begin{bmatrix} F_{u,0} & F_ ...
- 【转载】intellij idea如何将web项目打成war包
1.点击[File]->[Project Structure]菜单(或使用Shift+Ctrl+Alt+S快捷键),打开[Project Structure]窗口.如下图: 2.在[Projec ...
- eas之编辑界面中分录默认携带的标题栏
this.kdtEntrys_detailPanel.setTitle("物件内容"); KDContainer kdtEntrys_Container = (KDContai ...