我正在尝试从当年当月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