0

我正在尝试获取从当前年份当前月份的第一天到当前日期的天数。那么,这个脚本有什么问题?和正确的?

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

3 回答 3

2

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

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

那么这个怎么样:

SELECT
    DaysFromFirstOfMonth = DAY(GETDATE()) - 1

这就是你要找的吗??

于 2012-04-08T09:35:37.057 回答
2

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

例如:

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

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

8,8

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

于 2012-04-08T09:36:26.090 回答
0

你的风格价值似乎是错误的。102 用于 ansi-dates (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

于 2012-04-08T09:24:26.053 回答