在sql中,如何獲取特定月份的開始和結束日期。你可以幫我嗎。獲取星期的開始和結束日期?在Sql服務器?
6
A
回答
5
下面的工作不管你考慮的第一天周(星期日,星期一等),只要確保你使用SET DATEFIRST
如果你想改變默認值。 SET DATEFIRST 1
將在星期一的第一天。
SELECT DATEADD(DAY, 1 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekStart],
DATEADD(DAY, 7 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekEnd]
編輯
我剛剛重新閱讀您的要求,我想你可能是東西上面我所給出的不同了。如果你想第一個和最後一個月的一週中的一天,這個就可以了:
SELECT DATENAME(WEEKDAY, DATEADD(DAY, 1 - DATEPART(DAY, GETDATE()), GETDATE())) [FirstDayOfMonth],
DATENAME(WEEKDAY, DATEADD(DAY, - DATEPART(DAY, DATEADD(MONTH, 1, GETDATE())), DATEADD(MONTH, 1, GETDATE()))) [LastDayOfMonth]
6
要獲得一週的使用第一天:
select dateadd(wk, datediff(wk, 0, getdate()), 0)
最後一天將是第一天+ 6:
select dateadd(wk, datediff(wk, 0, getdate()), 0) + 6
警告:這是文化敏感。請檢查文檔@@datefirst
1
您的要求尚不清楚:您認爲哪一週是第一天和最後一天?週日和週六?星期一和星期五?星期一和星期天?但許多與日期相關的查詢的最佳解決方案是創建一個calendar table。這使您可以根據自己的定義輕鬆設置數週,數月和數年的第一天和最後幾天,如有必要,甚至可以採用多種格式。
如果您使用諸如財務年度,工作日等概念,其中定義因國家和公司而異,這一點尤其有用。當您的邏輯例外時,它也是最簡單的解決方案,例如一年中的第一週與「正常」一週有不同的規則。
隨着日曆表,你可以預填充一週的第一天和最後一天,然後你的查詢可以是這樣的:
-- first/last days stored as dates in their own columns
select FirstDayOfThisWeek, LastDayOfThisWeek
from dbo.Calendar
where BaseDate = @SomeDate
-- first/last days stored as bit flags
select max(BaseDate)
from dbo.Calendar
where BaseDate <= @SomeDate and IsFirstDayOfWeek = 0x1
0
在這裏,我給
周,月,季,半年,一年的開始和結束日期。
Select CONVERT(varchar(50), GETDATE(),105) 'GETDATE' ,
CONVERT(varchar(50), DATEADD(DAY, 2 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)),105) [WeekStart],
CONVERT(varchar(50),DATEADD(DAY, 8 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) ,105)[WeekEnd],
CONVERT(varchar(50),DATEADD(dd, -DAY(getdate()) + 1, getdate()),105) MonthStart,
CONVERT(varchar(50),DATEADD(dd, -DAY(DATEADD(mm, 1, getdate())), DATEADD(mm, 1, getdate())),105) MonthStart,
CONVERT(varchar(50), DATEADD(q, DATEDIFF(q, 0, GETDATE()), 0),105) AS 'QStart Date',
CONVERT(varchar(50), DATEADD(d, -1, DATEADD(q, DATEDIFF(q, 0, GETDATE()) + 1,0)),105) AS 'QEnd Date',
CONVERT(varchar(50), CAST(CAST(((((MONTH(GETDATE()) - 1)/6) * 6) + 1) AS VARCHAR) + '-1-' + CAST(YEAR(GETDATE()) AS VARCHAR) AS DATETIME),105) StartOfHalfYear,
CONVERT(varchar(50), CAST(CAST(((((MONTH(GETDATE()) - 1)/6) * 6) + 6) AS VARCHAR) + '-1-' + CAST(YEAR(GETDATE()) AS VARCHAR) AS DATETIME),105)EndOfHalfYear,
CONVERT(varchar(50), DATEADD(yy, DATEDIFF(yy,0,getdate()), 0),105) AS StartOfYear,
CONVERT(varchar(50), DATEADD(yy, DATEDIFF(yy,0,getdate()) + 1, -1),105) AS EndOfYear
1
下面是一個case語句,您可以使用它來爲日期值創建Weekbegin。它會讓你的星期在星期一或星期二或星期三開始......依賴於你設置爲@pDate的星期幾。
創建參數
DECLARE @pDate Date = NULL --Replace with your date, which will also be the first day of the week
DECLARE @pDatePart SMALLINT = DATEPART(dw, @pDate)
然後把這種情況下,聲明你的選擇
CASE
WHEN DATEPART(dw, CAST(DATEVALUE AS DATE)) BETWEEN @pDatePart AND 7 THEN DATEADD(d, (DATEPART(dw, CAST(DATEVALUE AS DATE))*-1)[email protected], CAST(DATEVALUE AS DATE))
WHEN DATEPART(dw, CAST(DATEVALUE AS DATE)) BETWEEN 1 AND @pDatePart-1 THEN DATEADD(d, (DATEPART(dw, CAST(DATEVALUE AS DATE))*-1)+(@pDatePart-7), CAST(DATEVALUE AS DATE))
END
AS DynamicWeekBegin
你總是可以,只需使用DATEADD(d,6獲得一週的最後日期,案後聲明)
相關問題
- 1. 獲取本週的開始日期和結束日期(星期一從星期一開始,星期日結束)
- 2. 如何在sql中獲取開始日期和結束日期?
- 3. SQL:如何獲取周開始日期和周結束日期
- 4. 獲取指定日期之前的星期的開始和結束日期
- 5. 如何在Android中獲取開始日期和結束日期?
- 6. 開始一個星期的SQL Server日期和結束日期2005年
- 7. 獲取PHP DatePeriod對象的開始日期和結束日期?
- 8. 獲取開始日期和結束日期的簡單方法
- 9. 獲取某月份的開始日期和結束日期
- 10. 如何獲取本週的開始日期和結束日期?
- 11. 獲取重疊的開始日期和結束日期
- 12. 如何在SQL Server中使用星期編號獲取星期開始和結束日期?
- 13. 如何按星期分組否,並獲取Sqlite中星期數的開始日期和結束日期?
- 14. 開始日期和結束日期datepicker
- 15. 開始日期和結束日期
- 16. 如何獲取日期時間月開始和結束日期?
- 17. 獲取從開始日期和結束日期
- 18. php,根據開始日期和月數獲取結束日期
- 19. 從該月的指定星期開始獲取開始日期和結束日期
- 20. OPENQUERY開始和結束日期SQL
- 21. SQL合併開始日期和結束
- 22. 獲取SQL中兩個日期之間月份的開始和結束日期?
- 23. 在開始日期到結束日期之間獲取數據
- 24. 本月的開始日期和結束日期以及本年的開始日期和結束日期
- 25. T-SQL - 根據週數獲取開始和結束日期。
- 26. 獲取給定開始日期和結束日期的日期列表
- 27. 如何獲取給定開始日期和結束日期的中間日期?
- 28. 如何獲取開始日期和結束日期之間的每週日期
- 29. SQL Server:最小和最大開始日期和結束日期
- 30. 獲取開始日期和結束日期 - 從給定年份開始yyyy
謝謝你,先生。Gareth D,我明白了,我使用你的查詢並添加了一些更多的代碼,現在它將來到,謝謝你。 – 2012-04-05 06:46:47