我有一個包含日期類型屬性的表A.我想編寫一個查詢來選擇另一個表B中的值,並在A值中的一個月後選擇值。任何人都知道如何在oracle中執行該操作?添加一個月到保存日期(oracle)
0
A
回答
6
您需要在Oracle中使用ADD_MONTHS
函數。
http://www.techonthenet.com/oracle/functions/add_months.php
附加信息:如果你想使用今天的日期此功能,您可以使用ADD_MONTHS(SYSDATE, 1)
從現在得到一個月。
8
2
問題是從表b中選擇一個date_field,其中表b的date_field比表a中的date_field提前一個月。
此問題中還必須考慮一個當前未指定的附加要求。我們是否對整個月(不考慮月份中的某幾天)感興趣,或者我們是否希望包括可能會使得提前一個月但只有幾天的日期不合格的日子(例如:a = 2011-04-30和b = 2011-05-01,b是提前1個月,但只有1天)。
在第一種情況下,我們必須截斷兩個日期的年份和月份值:
SELECT TRUNC(TO_DATE('2011-04-22','yyyy-mm-dd'), 'mm') as trunc_date
FROM dual;
給出:
trunc_date
----------
2011-04-01
在第二種情況下,我們不必修改日期。
至少有兩種方法可用於解決最初的問題:
首先一個旋轉約一個月加入表A中DATE_FIELD並找到在表中的行b相匹配的日期。
SELECT b.date_field
FROM tab_a as a
,tab_b as b
WHERE ADD_MONTHS(TRUNC(a.date_field, 'mm'), 1) = TRUNC(b.date_field, 'mm')
;
請注意截斷的日期。離開這個需要日期之間完美的日常匹配。
第二種方法是基於計算兩個日期之間的月差並選擇給出1個月差異的計算。
SELECT b.date_field
FROM tab_a as a
,tab_b as b
WHERE months_between(TRUNC(b.date_field, 'mm') , TRUNC(a.date_field, 'mm')) = 1
months_between中字段的順序在這裏很重要。在所提供的示例:
- 爲b.date_field1個月提前 a.date_field的值是1
- 爲b.date_field1個月之前a.date_field值爲-1(負一個)
顛倒順序也將扭轉結果。
希望這回答你的問題。
相關問題
- 1. 將1個月添加到日期值
- 2. 添加日期不超過一個月
- 3. 將當前日期添加一個月
- 4. Php將日曆月添加到日期
- 5. sqlite添加日期到一個日期
- 6. 如何添加幾個月到一個特定的日期
- 7. 如何將日期保存到oracle
- 8. javascript將月份添加到日期
- 9. 將Jalali月份添加到Jalali日期
- 10. MongoDB將月份日期添加到
- 11. 添加7天到一個月的日期,直到月底sql服務器
- 12. 在JavaScript中添加一個月到日期
- 13. 在T中添加一個月份到日期SQL
- 14. 要添加一個月到當前日期
- 15. 將1個日曆月的時間間隔添加到日期
- 16. 如何添加日期以及月份到特定日期?
- 17. 添加30天至日期(月/日/年)
- 18. 甲骨文:如何到6個月添加到當前日期
- 19. 日期加上一個月php
- 20. 日期增加1個月
- 21. PHP,日期:點追加到一個月的短期表現
- 22. 將個月添加到特定的java.sql.Date日期
- 23. 在Odoo 10中添加幾個月到日期時間
- 24. 添加1個月到部分字符串日期
- 25. 的Java:自定義1個月添加到當前日期
- 26. 手動添加一個日期(月)列查詢在SQL
- 27. CanvasJS圖表在日期中添加一個月
- 28. 日期UTC一個月關
- 29. 格式化日期並添加月份
- 30. 將日期添加到日曆不是正在更新月
你如何定義「一個月」?即如果源日期是1月31日,目標日期是多少? 2月28日或29日?三月的某一天? – Mat 2011-04-17 07:53:02
3月的第一個日期,恰好在31日之後的一個月。 – SunyGirl 2011-04-17 07:55:58
遊行的第一次約會並不真正。這是前兩個「月」,或者是29或30天。 – Mat 2011-04-17 08:00:19