如何使用datediff从该月的第一天获得天数

时间:2012-04-08 09:09:31

标签: sql-server

我正在尝试从当前年度的当月1日到当前日期。 那么,这个脚本有什么问题?和正确的?

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

3 个答案:

答案 0 :(得分:2)

该月份的第1天的天数是否始终等于DAY(YourDate)或可能DAY(YourDate) - 1 ???

3月22日,这个数字是...... 22(或21 - 取决于你如何计算) - 没有?

那怎么样:

SELECT
    DaysFromFirstOfMonth = DAY(GETDATE()) - 1

这就是你要找的东西吗?

答案 1 :(得分:1)

我建议您使用DAY(如评论中的@marc_s所述)或DATEPART来返回一个整数,该整数表示该日期的“每月日期”部分你正在与之合作。

E.g:

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

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

8,8

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

答案 2 :(得分:0)

你的风格价值似乎是错误的。 102是ansi-dates(yy.mm.dd) - 如果你想使用英国/法国日期(年/月/日),你必须使用值103:

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

请参阅http://www.w3schools.com/sql/func_convert.asp