比较两个日期并获得确切的天,月,年以及更多SQL Server 2008 R2的差额

时间:2018-10-10 18:59:45

标签: sql-server function date date-difference

我正在比较SQL Server中的两个日期,并且需要以下精确信息:

输入:

Start Date = 12/28/2015
End Date   = 12/25/2020

返回结果(每个部分在不同的列中):

  1. 天数= 1825(在计算中包括开始/结束日期)
  2. 年= 4
  3. 月= 11
  4. 天= 28
  5. 开始月份中的天数= 31天(因为是12月)
  6. 开始月份的占用=(因为12月为31天,所以为4/31)= .12903225806
  7. 结束月有多少天= 31天(因为是12月)
  8. 月末的占用=(因为12月为31天,所以为25/31)= .8064516129

1 个答案:

答案 0 :(得分:0)

对于1-3,您可以选中https://www.w3schools.com/sql/func_sqlserver_datediff.asp。这非常简单,您只需使用datediff并指定关注单位即可。

对于4,您只需执行day(开始日期)即可获取日期。

对于5和7,您可以使用: SELECT DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,@myDate)+1,0) 获取给定日期的月末日期,并使用day()获取datetime对象的日期部分。

对于6和8,这只是简单的数学运算,您可以从5和7得到该月的月份数,然后,如果开始日期为(day(eom(Start Date)) - day(Start Date) + 1) / day(eom(date),如果结束日期为day(End Date) / day(eom(End Date))

我没有给您完整的代码,因为除了我之外我没有运行SQL Server。希望对您有所帮助。