我在存儲過程中有一個日期時間參數值,它將接收像'30 -Sep-2011'這樣的值,並且該值將始終是該月的最後一天!我如何根據收到的價值獲得前兩個月的日期?而且價值觀也必須是本月的最後一天!根據參數值獲取前兩個月的日期
回答
declare @TwoMonthsBack datetime
select @TwoMonthsBack= dateadd(dd,-1, DateAdd(MM,-2,DateAdd(dd,1,@YourInputDateParam)))
實施例:
declare @YourInputDateParam datetime = '30-Sep-2011'
declare @TwoMonthsBack datetime
select @TwoMonthsBack= dateadd(dd,-1, DateAdd(MM,-2,DateAdd(dd,1,@YourInputDateParam)))
SELECT @TwoMonthsBack
打印:
2011-07-31 00:00:00.000
說明:
採取輸入日期(月的總是最後一天,按規定);增加一天(將在下個月的第一天 - 例子中的10月1日);減去2個月(將從輸入日期開始的1個月前的第一天 - 示例中的8月1日);減去1天(將使其從輸入日期的2個月前的最後一天 - 在例如7月31日)
不是七月的最後一天......你可以添加一天,減去兩個月,然後減去我懷疑的一天。 '@ TwoMonthsBack = DateAdd(DD,-1,DateAdd(MM,-2,DateAdd(DD,1,@YourInputDateParam)))' –
@Mootinator。我明白你的意思了。我剛剛意識到7月有31天! heheh。讓我解決它。 ;) – Icarus
查詢:
DECLARE @LastDay DATETIME;
SELECT @LastDay = '2011-02-28';
-- Previous two months "anatomy"
SELECT @LastDay AS LD
,CONVERT(DATETIME, 0) AS ["Day zero"]
,DATEDIFF(MONTH, 0, @LastDay) AS [Months from "Day zero"]
,DATEDIFF(MONTH, 0, @LastDay)-(2-1) AS [Months from "Day zero" - 1 month = previous month]
,DATEADD(MILLISECOND, -3, DATEADD(MONTH, DATEDIFF(MONTH, 0, @LastDay)-1, 0)) AS LDPrevious2Months;
-- End of "anatomy"
SELECT @LastDay = '2011-03-31';
SELECT @LastDay AS LD
,DATEADD(MILLISECOND, -3, DATEADD(MONTH, DATEDIFF(MONTH, 0, @LastDay)-1, 0)) AS LDPrevious2Months;
SELECT @LastDay = '2011-04-30';
SELECT @LastDay AS LD
,DATEADD(MILLISECOND, -3, DATEADD(MONTH, DATEDIFF(MONTH, 0, @LastDay)-1, 0)) AS LDPrevious2Months;
結果:
LD "Day zero" Months from "Day zero" Months from "Day zero" - 1 month = previous month LDPrevious2Months
----------------------- ----------------------- ---------------------- ------------------------------------------------- -----------------------
2011-02-28 00:00:00.000 1900-01-01 00:00:00.000 1333 1332 2010-12-31 23:59:59.997
LD LDPrevious2Months
----------------------- -----------------------
2011-03-31 00:00:00.000 2011-01-31 23:59:59.997
LD LDPrevious2Months
----------------------- -----------------------
2011-04-30 00:00:00.000 2011-02-28 23:59:59.997
+1 - 你可以簡化這個' - (2-1)'。也許'-1' :)。 –
:-)是的。用於OP:我的意圖是OP查看此操作的原因「(NumOfMonths -1)」=「(2個月 - 1個月)」 –
declare @start_date datetime
--declare @start_date1 datetime
declare @end_date datetime
--set @start_date1 =(select DATEDIFF(mm,GETDATE() ,getdate()))
set @start_date =(select DATEADD (mm,-10,getdate()))
set @end_date = (select convert(varchar(20),GETDATE()))
print @end_date
print @start_date
- 1. php,根據開始日期和月數獲取結束日期
- 2. 根據Codeigniter當前月份的日期獲取MySQL結果
- 3. 獲取前一個月的日期javascript
- 4. 獲取數據從數據庫根據兩個日期
- 5. 數據庫sql查詢根據月底數據的最短日期獲取值
- 6. 根據兩個日期之間的月數添加行數
- 7. 從當前日曆月和未來11個月獲取日期
- 8. 獲取兩個日期之間的數年,數月和數週
- 9. 從兩個日期參數中獲取數月之間的數量
- 10. PHP獲取日期的當前月份
- 11. 如何獲取月日數從兩個日期
- 12. 根據日期時間獲取值
- 13. 如何從當前日期前一個月獲取日期,當前日期是一月?
- 14. 兩個日期列,一個日期。我如何獲取數據?
- 15. 從數據庫獲取當前月份日期
- 16. 如何在gridview上獲取前一個月的日期(日曆)
- 17. 如何根據當前日期獲取數據?
- 18. 如何在YII上個月的兩個日期之間獲取數據?
- 19. 獲取前幾個月的數據
- 20. 根據月份生成月份日期
- 21. 根據日期匹配兩個數組
- 22. 如何根據日期,月份和年份比較Cakephp中的兩個日期
- 23. 從日期獲取月份的日期
- 24. 參考當前日期獲取一週中的日期數組
- 25. 在JavaScript中使用年,月,日兩個日期獲取差異
- 26. 循環兩個日期以獲取值
- 27. sqHow如何根據兩個日期獲得每週總和值?
- 28. 根據用戶ID在兩個日期之間獲取記錄
- 29. 根據最大日期獲取一些值(兩個表之間的查詢)
- 30. 根據日期和月份從mongodb獲取文檔
什麼SQL Server版本? –