如何在sql 2000中查找一個月的最後一個星期日?查找最後一個星期日
12
A
回答
11
SELECT
DATEADD(day,DATEDIFF(day,'19000107',DATEADD(month,DATEDIFF(MONTH,0,GETDATE() /*YourValuehere*/),30))/7*7,'19000107')
編輯:正確的,最後,工作從我的同事回答。
0
天哪,這是醜陋的,但這裏有雲:
DECLARE @dtDate DATETIME
SET @dtDate = '2009-11-05'
SELECT DATEADD(dd, -1*(DATEPART(dw, DateAdd(day, -1, DateAdd(month, DateDiff(month, 0, @dtDate)+1, 0)))-1),
DateAdd(day, -1, DateAdd(month, DateDiff(month, 0, @dtDate)+1, 0)))
0
首先建立一個理貨表。 http://www.sqlservercentral.com/articles/T-SQL/62867/ 然後得到你想要的東西..
http://www.sqlservercentral.com/Forums/Topic515226-1291-1.aspx
DECLARE @DateStart DATETIME,
@DateEnd DATETIME
SELECT @DateStart = '20080131',
@DateEnd = '20101201'
SELECT DATEADD(wk,DATEDIFF(wk,6,DATEADD(mm,DATEDIFF(mm,-1,DATEADD(mm,t.N-1,@DateStart)),-1)),6)
FROM dbo.Tally t
WHERE t.N <= DATEDIFF(mm,@DateStart,@DateEnd)
1
DECLARE @LastDateOfMonth smalldatetime
SELECT @LastDateOfMonth = DATEADD(month, DATEDIFF(month, -1, GETDATE()), 0) -1
Select DATEADD(dd,-(CASE WHEN DATEPART(weekday,@LastDateOfMonth) = 1 THEN 0 ELSE DATEPART(weekday,@LastDateOfMonth) - 1 END),@LastDateOfMonth)
2
的另一種方法,從數據倉庫實踐借來的。創建一個日期維度表並預加載10年左右。
TABLE dimDate (DateKey, FullDate, Day, Month, Year, DayOfWeek,
DayInEpoch, MonthName, LastDayInMonthIndicator, many more..)
以填補在dimDate
最簡單的方法是一個下午花與Excel,然後從那裏導入到數據庫中。一半體面dimDate
表有50多列 - 任何你想知道約會的東西。
有了這個地方,問題就變成這樣的:
SELECT max(FullDate)
FROM dimDate
WHERE DayOfWeek = 'Sunday'
AND Month = 11
AND Year = 2009;
從本質上講,所有日期相關的查詢變得更簡單。
-1
select next_day(last_day(sysdate)-7, 'Sunday') from dual
+0
不是原始問題聲明的sql 2000 – DasDave 2015-08-17 10:29:05
3
select dateadd(day,1-datepart(dw, getdate()), getdate())
2
下週日在SQL,無論哪一天是一週的第一天:返回2011-01-02 23:59:59.000在22日 - 12月2010:
select DateADD(ss, -1, DATEADD(week, DATEDIFF(week, 0, getdate()), 14))
1
我找到一些難以理解的解決方案,所以這裏是我的帶變量的版本來解釋步驟。
ALTER FUNCTION dbo.fn_LastSundayInMonth
(
@StartDate DATETIME
,@RequiredDayOfWeek INT /* 1= Sunday */
)
RETURNS DATETIME
AS
/*
A detailed step by step way to get the answer...
SELECT dbo.fn_LastSundayInMonth(getdate()-31,1)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,2)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,3)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,4)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,5)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,6)
SELECT dbo.fn_LastSundayInMonth(getdate()-31,7)
*/
BEGIN
DECLARE @MonthsSince1900 INTEGER
DECLARE @NextMonth INTEGER
DECLARE @DaysToSubtract INTEGER
DECLARE @FirstDayOfNextMonth DATETIME
DECLARE @LastDayOfMonthDayOfWeek INTEGER
DECLARE @LastDayOfMonth DATETIME
DECLARE @ReturnValue DATETIME
SET @MonthsSince1900=DateDiff(month, 0, @StartDate)
SET @[email protected]+1
SET @FirstDayOfNextMonth = DateAdd(month,@NextMonth, 0)
SET @LastDayOfMonth = DateAdd(day, -1, @FirstDayOfNextMonth)
SET @ReturnValue = @LastDayOfMonth
WHILE DATEPART(dw, @ReturnValue) <> @RequiredDayOfWeek
BEGIN
SET @ReturnValue = DATEADD(DAY,-1, @ReturnValue)
END
RETURN @ReturnValue
END
相關問題
- 1. 使用日期找到最後一個星期一在SQL 2008
- 2. 查找第一個星期一的日期指定的日期
- 3. 查找日期範圍目前一個星期,每星期
- 4. 如何在php中查找本月的最後一個星期四的日期?
- 5. 如何通過批量查找最後一個星期幾日期
- 6. sql查找今天日期之後的所有星期一
- 7. 查找當前星期的開始日期(星期一)
- 8. 找到最後一個付款日期
- 9. 查找上個星期日的日期從當前日期
- 10. 查找一個月的第三個星期日之前的星期一
- 11. 查找下一個星期一的Java日期6:00,例如
- 12. 如何找到最近的一個星期的任意日期?
- 13. 公式查找最近的星期一
- 14. 火鳥:一個月的最後一個星期日
- 15. java一個月的最後一個星期日
- 16. 如何獲得最後一個星期天日期從UNIX
- 17. 得到在PHP日期的最後一個星期四
- 18. 拉最後一個星期五的日期
- 19. 查找最近的一個日期基於第一行日期
- 20. 如何設置SQL來找到最後一個星期日記錄本星期日(1周)
- 21. MySQL查找最後一個營業日
- 22. 獲取最後一個Java日期/日曆的最後日期
- 23. 查找上一個星期日期算法
- 24. c#中一年的最後一個星期日#
- 25. SQL Server的日期表:編程找到的最後一個星期日在一個特定的月份
- 26. 查找月份的最後一個日期和返回值
- 27. 查找最後一個snapmirror更新日期
- 28. 查找給定日期的星期幾
- 29. 如何找到月份的最後一個星期一
- 30. 開始星期日的第一週的星期幾,星期六的星期的最後一天結束
不適用於大多數非美國英語安裝... – gbn 2009-11-25 15:00:14