本次经验主要是带给大家4种思考方式,以月末的时间算法语句为例,让大家学会如何去寻找更多的方法解决当前的问题,sql语句也不是一成不变的,写惯了重复的那种语句,慢慢的思路就会固化,所以,去发现一些其他的方法解决当前的问题,或许会给自己眼前一亮的感觉,让思维更为活跃一些。
工具/原料
SQL Server 2005
步骤/方法
- 1
首先来说一下思路,我们在之前的经验中看到过月初的算法语句,那这次我们计算月末,是不是可以这样想,我们计算出下一个月的月初,然后减去1天,就变成当前月的月末了。那接下来,我们还是先定义好参数。
2我们还是需要这几个函数帮忙,dateAdd()和dateDiff()函数,对于时间操作来说,基本上就离不开这俩函数。我们一步一步的来,首先,我们先算出1900-01-01距离给定日期有多少个月。语法为:select datediff(month,'1900-01-01',@Date)
as '月数'
3计算出相差月数以后,那我们就可以在这个月数上+1,然后计算出下一个月的第一天。语法为:select dateAdd(month,1+datediff(month,'1900-01-01',@Date),
'1900-01-01') as '下一个月的第一天'
4最后,我们用下个月的第一天减去1天,就可以得到给定月的最后一天了。语法为:select dateAdd(day,-1,dateAdd(month,1+datediff(month,'1900-01-01',@Date),'1900-01-01')) as '本月的最后一天'
5那另外一个方法就是,我们将时间单位换成month来试试看,语法为:select dateAdd(month,1+datediff(month,'1900-01-01',@Date),'1900-01-01')-1 as '本月最后一天'。其实原理很简单,我们利用month的时间单位计算出给定日期的下个月的第一天,然后减去1天就是给定日期当月的最后一天了。
6另一个思路就是,我们可以把1900-01-01减少一天为1899-12-31,这样的话,就和计算月初的语法是一样的了。语法为:select dateAdd(month,datediff(month,'1899-12-31',@Date),'1899-12-31') as '本月的最后一天'
7之前,我们也说过,1900-01-01可以用0代替,那这里的1899-12-31也可以用-1代替。其实结果还是一样的。
8那在月初的计算中,我们也有提到过,如果我想精确到时分秒,应该如何做呢?通过前面的经验,大家都知道如果想要时分秒,就需要day做时间单位,那来说一下思路:获取本月的第一天,然后加一个月,然后用下一个月的第一天减去1天即可。语法为:select dateAdd(month,1,dateAdd(day,1-datepart(day,@Date),@Date))-1
as '本月最后一天'
END注意事项
希望这个思路对于大家能够有所帮助~
编辑推荐:
- Office2007系统初级协同工作配置03-02
- 【SQL Server】月末的时间算法03-02
- 一起认识Excel高级筛选中的通配符03-02
- Excel常用自定义格式参数03-02
- Charlie’s List——214个键盘快捷键03-02
- 令人耳目一新的Excel 2007文档03-02
- 选项卡和模板03-02
- XI 关键性能指标,动作和名称集(一)03-02
下一篇:相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- 【SQL Server】月末的时间算法
【SQL Server】月末的时间算法
26-03-02 - 一起认识Excel高级筛选中的通配符
一起认识Excel高级筛选中的通配符
26-03-02 - 浩辰CAD教程机械2012之三十四:CAD图纸信息批量提取
浩辰CAD教程机械2012之三十四:CAD图纸信息批量提取
26-03-02 - Discuz!NT 3.1.0图文安装升级教程
Discuz!NT 3.1.0图文安装升级教程
26-03-02 - Win7 SQL 2005安装及COM+问题
Win7 SQL 2005安装及COM+问题
26-03-02 - XII 筛选OLAP数据,以及一些“持续”改进(二)
XII 筛选OLAP数据,以及一些“持续”改进(二)
26-03-02 - sql server2005数据库日志清除步骤
sql server2005数据库日志清除步骤
26-03-02 - sql server 2008安装图解
sql server 2008安装图解
26-03-02 - 在VBA中使用条件格式的示例_Excel 2007新知
在VBA中使用条件格式的示例_Excel 2007新知
26-03-02 - 怎样使用秘奥远程网络工具+Sql Server数据库
怎样使用秘奥远程网络工具+Sql Server数据库
26-03-02
