如何在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