Cách hiệu quả nhất để tính ngày cuối cùng của quý CURRENT là gì?Tính ngày cuối cùng trong quý CURRENT
Ví dụ: được cung cấp ngày 3/5/09, tôi muốn trả lại ngày 31/3/2009.
Platform là ColdFusion và SQL Server
Cách hiệu quả nhất để tính ngày cuối cùng của quý CURRENT là gì?Tính ngày cuối cùng trong quý CURRENT
Ví dụ: được cung cấp ngày 3/5/09, tôi muốn trả lại ngày 31/3/2009.
Platform là ColdFusion và SQL Server
SELECT DATEADD(qq, DATEDIFF(qq, - 1, '3/5/09'), - 1)
Điều này có thể sử dụng một số refactoring, nhưng sẽ nhận được các ý tưởng cơ bản trên.
<cffunction name="lastDayOfQuarter">
<cfargument name="d" default="#now()#">
<cfif month(d) lte 3>
<cfreturn createDate(year(d),03,31)>
</cfif>
<cfif month(d) lte 6>
<cfreturn createDate(year(d),06,30)>
</cfif>
<cfif month(d) lte 9>
<cfreturn createDate(year(d),9,30)>
</cfif>
<cfreturn createDate(year(d),12,31)>
</cffunction>
Để có được quý từ một ngày cụ thể:
SELECT dateadd(dd,-1,dateadd(qq,1,DATEADD(qq, DATEDIFF(qq,0,<date here>), 0)))
Hoặc nếu bạn có nghĩa là quý hiện tại:
SELECT dateadd(dd,-1,dateadd(qq,1,DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)))
câu trả lời này sử dụng được xây dựng trong các chức năng khu phố và DaysInMonth:
#createDate(year(now()), (quarter(now())*3), daysInMonth(createDate(year(now()), quarter(now())*3,1)))#
Nó có thể là e asier để đọc nếu nó bị hỏng một chút.
EDIT (@Sam Farmer: Tôi mất sự tự do để thay đổi đề nghị của bạn vào một chức năng CF)
<cffunction name="LastOfQuarter" returntype="date" output="no" access="public">
<cfargument name="d" type="date" required="no" default="#Now()#">
<cfset d = CreateDate(Year(d), Quarter(d) * 3, 1)>
<cfreturn DateAdd("d", d, DaysInMonth(d) - 1)>
</cffunction>
Cảm ơn! Chức năng tìm kiếm đẹp :) –
Tôi đã nghĩ về việc đăng bài này trong một câu trả lời của riêng tôi. Nhưng về cơ bản nó sẽ là một sự suy nghĩ rẻ tiền về ý tưởng của bạn, vì vậy tôi quyết định chống lại nó. ;-) – Tomalak
@Sam Farmer: Đã xóa bản chỉnh sửa của bạn (
@Learning: khiến bạn nghĩ gì mà nhu cầu câu hỏi và [SQLServer] thẻ? * có vẻ hơi bối rối * – Tomalak
@Tomalak: bởi vì nó nói như vậy trong câu hỏi? :) – Learning
Bạn có muốn làm ngày thực tế cuối cùng hoặc ngày làm việc cuối cùng của quý không? –