纠正网上流传的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取某一时间的当月第一天和最后一天的时间写法相关推荐
- SQL获取上个月第一天和最后一天的时间写法
http://www.cnblogs.com/ethan-qi/archive/2012/04/23/2466292.html 网上取当月第一天和最后一天的SQL语句很多,有的是通过字符截取,有 ...
- sql如何取某年某月的第一天和最后一天
sql如何取某年某月的第一天和最后一天 SELECT CAST((LEFT('20093',4)+'-'+SUBSTRING('20093',5,LEN('20093'))+'-'+'01') AS ...
- c# asp.net core取当月第一天和最后一天及删除最后一个字符的多种方法
当月第一天0时0分0秒 DateTime.Now.AddDays(1 - DateTime.Now.Day).Date 当月最后一天23时59分59秒 DateTime.Now.AddDays(1 - ...
- oracle取本月最后一天是星期几_在oracle里,如何取得本周、本月、本季度、本年度的第一天和最后一天的时间...
------解决方案-------------------- --本周 select trunc(sysdate,'d')+1 from dual; select trunc(sysdate,'d') ...
- Java多线程的11种创建方式以及纠正网上流传很久的一个谬误
创建线程比较传统的方式是继承Thread类和实现Runnable,也可以用内部类,Lambda表达式,线程池,FutureTask等. 经常面试会问到继承Thread类和实现Runnable的区别,然 ...
- sql 取重复key中的第一条_SQL每日一题
写在前面 SQL每日一题是用牛客网的sqlite库的题目进行深度讲解(感觉进度慢的小伙伴可以自行前往刷题),这个系列要开启日更计划,每日一题,一起进步学习. 题目描述 查找最晚入职员工的所有信息,为了 ...
- MySQL----获取当前日期当月第一天,最后一天
获取当前日期 select curdate(); 结果: 2021-10-15 获取当前日期为几号 day(curdate()) 结果: 15 在当前日期上加上时间间隔 DATE_ADD(curdat ...
- Hive SQL 计算指定日期本周的第一天和最后一天
selectday,dayofweek(day) as dw1,date_add(day,1 - dayofweek(day)) as Su_s -- 周日_start,date_add(day,7 ...
- mysql语句优化方案(网上流传)
关于mysql处理百万级以上的数据时如何提高其查询速度的方法 最近一段时间由于工作需要,开始关注针对Mysql数据库的select查询语句的相关优化方法. 由于在参与的实际项目中发现当mysql表的数 ...
最新文章
- 基于matlab的元音共振峰的估算
- [考试]20150528
- 案例二:动态页面模拟点击
- [codevs 1503]愚蠢的宠物(特殊的LCA)
- 虚拟机上安装win7系统
- Detecting Causality in Complex Ecosystems(检测复杂生态系统中的因果关系)
- java接口回调、同步回调、异步回调
- 几种常用数据库的区别
- gfsj(getit)
- 软件测试学习小记 note2
- openlayers 绘制tin数据导文
- Java配车标识英文单词怎么写_车用英语怎么写
- 物流企业计算机网络,物流企业内部网络建设.ppt
- 流密码:线性同余生成器 LCG
- cloudreve旧版php下载,cloudreve
- 对自己现阶段职业规划的一些思考
- asp.net TextBox文本框背景透明+浅色背景文字提示
- Ubuntu16.04 安装NVIDIA英伟达驱动教程 及常见几种报错Error的解决方案
- 算法网课笔记(七)——排序
- python,利用秦九韶算法计算多项式值
热门文章
- VTK:绘图之ScatterPlot
- OpenCV 错误级别分析ELA的实例(附完整代码)
- C语言实现牛顿-拉夫逊newton raphson求近似根roots(附完整源码)
- 经典C语言程序100例之十六
- C++构造及析构执行顺序
- Azkaban任务调度(使用带有依赖的任务调度)【mapreduce数据清洗,数据入hive库,kylin预编译、数据分析】
- hdfs haadmin使用,DataNode动态上下线,NameNode状态切换管理,数据块的balance,HA下hdfs-api变化(来自学习资料)
- jquery sortable的拖动方法内容说明和示例详解(转载http://www.jb51.net/article/45803.htm)
- 指针数组,数组指针,函数指针,main函数实质,二重指针,函数指针作为参数,泛型函数
- Sturt2做表单重复提交