如何使用日期差异从每月的第一天获取天数



我正在尝试从当年当月1号开始获取天数。到当前日期。那么,这个脚本有什么问题呢?正确的那个呢?

select DATEDIFF(day,CONVERT(varchar,1+'/'+ MONTH(GETDATE())+'/' + YEAR(GETDATE()),102),GETDATE());  

从每月 1 日开始的天数不是总是等于 DAY(YourDate) 天或可能等于DAY(YourDate) - 1 ???

在3月22日,这个数字是.....22(或 21 - 取决于您如何计数)- 否???

那么这个怎么样:

SELECT
    DaysFromFirstOfMonth = DAY(GETDATE()) - 1

这就是你要找的吗??

我建议您使用DAY(如@marc_s在评论中所说)或DATEPART ,以返回一个整数,该整数表示您正在使用的日期的"月份中的某天"部分。

例如:

SELECT DAY(GETDATE()),DATEPART(day,GETDATE())

将(今天,2012年4月8日)回归:

8,8

然后,您可以从那里执行任何必要的调整。

您的样式值似乎错误。 102 表示 ANSI-date (yy.mm.dd) - 如果要使用英国/法国日期 (dd/mm/yy),则必须使用值 103:

select DATEDIFF(day,CONVERT(varchar,1+'/'+ MONTH(GETDATE())+'/' + YEAR(GETDATE()),103),GETDATE());  

见 http://www.w3schools.com/sql/func_convert.asp

最新更新