在实际SQL计算中,有时候需要统计从指定日期当年的第一天到指定日期之间的数据,这个时候,就需要计算出当年的第一天到底是什么日期,这个该怎么计算呢?
工具/原料
sqlserver
方法/步骤
1、总体思路:先计算指定日期距离最小日期(1900-01-01)之间相差多少年,然后,再从最小日期加上相差的年份,就得到了指定日期的当年第一天。本文以sqlserver为例讲解,需要用到两个函数dateadd和datediff
2、获取SQLserver的当前日期selectGETDATE()
3、DATEADD(datepart,num水瑞侮瑜ber,date)使用1)datepart:表示你要操辑湃形傥作的日期的部分,一次只能操作一个类型。比如,一次加5年,一次加2月,一次加3天。都只能一个一个的加。年:year,月:month,日:day2)number:表示你要加或者减的数量,如果detepart是年,就表示操作年3)date:表示在什么日期基础上操作
4、DATEDIFF(datepart,startdate,enddate)使用1)datepart:表示你要计算的日期的部分,如年,月,日2)startdate:表示开始日期3)enddate:表示结束日期
5、计算指定日期(以当前日期为例)到SQLServer最小日期(1900颍骈城茇-01-01)之间相差多少年selectdatediff(year,0,getdate())as'枷讹般身相差年份',GETDATE()as'当前日期'
6、从SQLServer最小日期(1900-01-01)加上距今的年份,就得到了今年的第一天selectdateadd(year,datediff(year,0,getdate()),0)
7、如果不是当前日期,只需要修改getdate()就可以了。比如,想要知道2020-05-01的当年第一天日期selectdateadd(year,datediff(year,0,'2020-05-01'),0)