网上取当月第一天和最后一天的SQL语句很多,有的是通过字符截取,有的是通过函数,个人还是比较偏向于使用内置函数来处理,
但是看了下网上的运用函数来取第一天和最后一天时间的SQL语句几乎都像下面这样的,其实是存在问题的,存在一个临界值得问题。
本月第一天:select   dateadd(dd,-day(getdate())+1,getdate())  
本月最后一天:select   dateadd(dd,-day(getdate()),dateadd(m,1,getdate()))
上面的两句,第一句取第一天的完全没问题,第二句就有问题了,一般的想法是取最后一天,可以在当前时间上加一个月,然后减去当前
时间的天数,比如随便2009-8-27,加一个月就是2009-9-27,然后减去2009-8-27时间的天数27天 正好是2009-8-31,没问题呀。但是,
如果当前时间本身就是最后一天的话,就会产生临界问题了,比如传入的实际是2009-5-31,最终得到的最后一天的时间其实也应该是
2009-5-31才对,如果按照上面的写法,2009-5-31加一个月是多少,2009-6-31?2009-7-1?都不是,由于月大月小的问题,6月份只有
30天,所以2009-5-31加一个月后是2009-6-30日,还是按上面的写法然后再减去2009-5-31时间的天数31天,最终得到的最后一天是
2009-5-30,傻眼了,咋回事啊?还有2月只有28或29天当然也会存在这样的问题,只要稍微改动一下,在减天数的时候不应减当前时间
的天数,而应减去加了月份之后的天数,如下写法:
select   dateadd(dd,-day(dateadd(m,1,getdate())),dateadd(m,1,getdate()))
这样的话,即使6月没有31天,2009-6-30减去30天就是2009-5-31,再如2009-1-30加一个月是2009-2-28,减去28天后是2009-1-31符合
正确性。

转载于:https://www.cnblogs.com/peaceli/archive/2009/08/27/1554866.html

纠正网上流传的SQL取某一时间的当月第一天和最后一天的时间写法相关推荐

  1. SQL获取上个月第一天和最后一天的时间写法

     http://www.cnblogs.com/ethan-qi/archive/2012/04/23/2466292.html 网上取当月第一天和最后一天的SQL语句很多,有的是通过字符截取,有 ...

  2. sql如何取某年某月的第一天和最后一天

    sql如何取某年某月的第一天和最后一天 SELECT CAST((LEFT('20093',4)+'-'+SUBSTRING('20093',5,LEN('20093'))+'-'+'01') AS ...

  3. c# asp.net core取当月第一天和最后一天及删除最后一个字符的多种方法

    当月第一天0时0分0秒 DateTime.Now.AddDays(1 - DateTime.Now.Day).Date 当月最后一天23时59分59秒 DateTime.Now.AddDays(1 - ...

  4. oracle取本月最后一天是星期几_在oracle里,如何取得本周、本月、本季度、本年度的第一天和最后一天的时间...

    ------解决方案-------------------- --本周 select trunc(sysdate,'d')+1 from dual; select trunc(sysdate,'d') ...

  5. Java多线程的11种创建方式以及纠正网上流传很久的一个谬误

    创建线程比较传统的方式是继承Thread类和实现Runnable,也可以用内部类,Lambda表达式,线程池,FutureTask等. 经常面试会问到继承Thread类和实现Runnable的区别,然 ...

  6. sql 取重复key中的第一条_SQL每日一题

    写在前面 SQL每日一题是用牛客网的sqlite库的题目进行深度讲解(感觉进度慢的小伙伴可以自行前往刷题),这个系列要开启日更计划,每日一题,一起进步学习. 题目描述 查找最晚入职员工的所有信息,为了 ...

  7. MySQL----获取当前日期当月第一天,最后一天

    获取当前日期 select curdate(); 结果: 2021-10-15 获取当前日期为几号 day(curdate()) 结果: 15 在当前日期上加上时间间隔 DATE_ADD(curdat ...

  8. Hive SQL 计算指定日期本周的第一天和最后一天

    selectday,dayofweek(day) as dw1,date_add(day,1 - dayofweek(day)) as Su_s -- 周日_start,date_add(day,7 ...

  9. mysql语句优化方案(网上流传)

    关于mysql处理百万级以上的数据时如何提高其查询速度的方法 最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法. 由于在参与的实际项目中发现当mysql表的数 ...

最新文章

  1. 基于matlab的元音共振峰的估算
  2. [考试]20150528
  3. 案例二:动态页面模拟点击
  4. [codevs 1503]愚蠢的宠物(特殊的LCA)
  5. 虚拟机上安装win7系统
  6. Detecting Causality in Complex Ecosystems(检测复杂生态系统中的因果关系)
  7. java接口回调、同步回调、异步回调
  8. 几种常用数据库的区别
  9. gfsj(getit)
  10. 软件测试学习小记 note2
  11. openlayers 绘制tin数据导文
  12. Java配车标识英文单词怎么写_车用英语怎么写
  13. 物流企业计算机网络,物流企业内部网络建设.ppt
  14. 流密码:线性同余生成器 LCG
  15. cloudreve旧版php下载,cloudreve
  16. 对自己现阶段职业规划的一些思考
  17. asp.net TextBox文本框背景透明+浅色背景文字提示
  18. Ubuntu16.04 安装NVIDIA英伟达驱动教程 及常见几种报错Error的解决方案
  19. 算法网课笔记(七)——排序
  20. python,利用秦九韶算法计算多项式值

热门文章

  1. VTK:绘图之ScatterPlot
  2. OpenCV 错误级别分析ELA的实例(附完整代码)
  3. C语言实现牛顿-拉夫逊newton raphson求近似根roots(附完整源码)
  4. 经典C语言程序100例之十六
  5. C++构造及析构执行顺序
  6. Azkaban任务调度(使用带有依赖的任务调度)【mapreduce数据清洗,数据入hive库,kylin预编译、数据分析】
  7. hdfs haadmin使用,DataNode动态上下线,NameNode状态切换管理,数据块的balance,HA下hdfs-api变化(来自学习资料)
  8. jquery sortable的拖动方法内容说明和示例详解(转载http://www.jb51.net/article/45803.htm)
  9. 指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为参数,泛型函数
  10. Sturt2做表单重复提交