我试图从当前年的当前月份的第一天到当前日期获取天数。 那么,这个脚本有什么问题?和正确的?如何获取使用datediff的月份第一天的天数
select DATEDIFF(day,CONVERT(varchar,1+'/'+ MONTH(GETDATE())+'/' + YEAR(GETDATE()),102),GETDATE());
我试图从当前年的当前月份的第一天到当前日期获取天数。 那么,这个脚本有什么问题?和正确的?如何获取使用datediff的月份第一天的天数
select DATEDIFF(day,CONVERT(varchar,1+'/'+ MONTH(GETDATE())+'/' + YEAR(GETDATE()),102),GETDATE());
是不是从该月的第一天开始的天数总是等于DAY(YourDate)
或可能是DAY(YourDate) - 1
???
在3月22日,这个数字是..... 22(或21 - 取决于你如何计数) - 不?
那么这个怎么样:
SELECT
DaysFromFirstOfMonth = DAY(GETDATE()) - 1
是你在找什么?
好主意 - 你是对的,但是如何在相同的例子中使用'DateDIFF'? – Salahaldin 2012-04-08 13:06:40
@Salahaldin:**为什么**你坚持'DATEDIFF'?这只是不必要的复杂和容易出错..... – 2012-04-08 15:03:06
你的风格值似乎是错误的。 102是用于ANSI-日期(YY.MM.DD) - 如果你想使用英国/法语日期(日/月/年),你必须使用值103:
select DATEDIFF(day,CONVERT(varchar,1+'/'+ MONTH(GETDATE())+'/' + YEAR(GETDATE()),103),GETDATE());
将varchar值“/”转换为数据类型int时转换失败。 – Salahaldin 2012-04-08 09:31:41
对不起,我无法尝试这一点,所以我没有看到另一个错误:你应该可以转换为日期时间,而不是varchar。但我认为下面的一些答案正在接近这个问题好得多 – Johanness 2012-04-08 09:44:42
是不是从这个月的第一天开始的天数总是等于'DAY(YourDate)'???在三月二十二日,这个数字是...... 22,不是? – 2012-04-08 09:12:52
@marc_s - 我认为它可能是'-1'(因为发布的代码将在本月的第一天返回0) – 2012-04-08 09:26:46
@Damien_The_Unbeliever:是的,可能 - 你是对的。 – 2012-04-08 09:33:42