我手上有問題。我正在開發一個應用程序,用戶希望將其心願卡發送給其生日在用戶提供的FROM和TO日期內的其客戶,無論年份如何。即搜索結果應僅基於月份和日期。例如我的輸入參數是從日期:「12/05」(12月05日)和截止日期:「01/04」(04年1月)。請幫忙。在此先感謝即將到來的生日oracle列表plsql
0
A
回答
0
你應該使用這個查詢條件。如果從現在開始在一個月內,它將選擇birthdate
。生日可以來自任何年:
where
TO_DATE(TO_CHAR(birthdate,'dd.mm')||'.1900','DD.MM.YYYY') ,
between
TO_DATE(TO_CHAR(sysdate,'dd.mm')||'.1900','DD.MM.YYYY')
and ADD_MONTHS(TO_DATE(TO_CHAR(sysdate,'dd.mm')||'.1900','DD.MM.YYYY'),1)
如果用戶輸入的日期範圍,例如'02/03' 和'23/06' (‘P1’和在此查詢‘P2’),然後使用以下條件。
where
(
TO_DATE(TO_CHAR(birthdate,'dd.mm')||'.1900','DD.MM.YYYY') ,
between
TO_DATE('P1'||'.1900','DD.MM.YYYY')
and
TO_DATE('P2'||'.1900','DD.MM.YYYY')
)
OR
(
(TO_DATE('P1'||'.1900','DD.MM.YYYY')
> TO_DATE('P2'||'.1900','DD.MM.YYYY'))
and
(
TO_DATE(TO_CHAR(birthdate,'dd.mm')||'.1900','DD.MM.YYYY') ,
between
TO_DATE('P1'||'.1900','DD.MM.YYYY')
and
TO_DATE('31.12.1900','DD.MM.YYYY')
OR
TO_DATE(TO_CHAR(birthdate,'dd.mm')||'.1901','DD.MM.YYYY') ,
between
TO_DATE('01.01.1901','DD.MM.YYYY')
and
TO_DATE('P2'||'.1901','DD.MM.YYYY')
)
)
1
可以使用PLSQL的提取功能:
extract(MONTH FROM DATE '2003-08-22') would return 8
extract(DAY FROM DATE '2003-08-22') would return 22
0
假設您已經將DOB存儲爲DATE讓表格PPL中的column =「DOB」。
即對於原載:
FIRSTNAME LASTNAME DOB
-------------------------------- -------------------------------- ---------
Joe Bloggs 03-JAN-90
Jane Doe 05-JAN-40
Adam West 05-DEC-76
我們得到
SQL> select firstname, lastname, dob, next_bday
2 from (select firstname, lastname, dob,
3 case when to_date(to_char(dob, 'mmdd'), 'mmdd') < trunc(sysdate)
4 then add_months(to_date(to_char(dob, 'mmdd'), 'mmdd'), 12)
5 else to_date(to_char(dob, 'mmdd'), 'mmdd')
6 end next_bday
7 from ppl)
8 where next_bday < add_months(trunc(sysdate), 1);
FIRS LASTNA DOB NEXT_BDAY
---- ------ --------- ---------
Joe Bloggs 03-JAN-90 03-JAN-13
Adam West 05-DEC-76 05-DEC-12
相關問題
- 1. 即將到來的生日
- 2. php - 即將到來的日期列表
- 3. FQL檢索即將到來的生日
- 4. 即將到來的生日與MongoEngine
- 5. 查詢即將到來的生日
- 6. XPath - 查找即將到來的生日
- 7. Tsql表變量到Oracle PLSql
- 8. 如何獲得所有Facebook朋友的即將到來的生日的列表
- 9. 計算未來N天即將到來的生日的方法
- 10. Oracle PLSQL中的多值列
- 11. Oracle sql或plsql將行轉換爲列
- 12. Oracle PLSQL XML規範化(即C14N代)
- 13. SQL Server 2005,計算從出生日期即將到來的生日
- 14. 顯示用戶的即將到來的生日
- 15. 使用rails查詢即將到來的生日嗎?
- 16. MYSQL - 即將到來的X出生日期
- 17. 如何在Rails中創建「即將到來的生日」模塊?
- 18. 如何從數據庫中提取即將到來的生日?
- 19. 如何顯示即將到來的生日?
- 20. 尋找即將到來的生日與jOOQ
- 21. CoreData按即將到來的生日排序
- 22. facebook即將到來的生日只會在今年提取
- 23. 獲取即將到來的生日mysql時間戳
- 24. 如何使用mysql顯示即將到來的生日?
- 25. Excel中即將到來的日期
- 26. 根據單個即將到來的日期和續訂條款生成續訂日期列表的T-SQL
- 27. Oracle生成IW週日期列表
- 28. Oracle/PLSQL。選擇兩個表
- 29. 通select語句到Oracle PLSQL
- 30. 使用日期時間來捕獲即將到來的日期
VALEX感謝您的時間。其實問題是它的用戶輸入日期範圍。並且用戶可以輸入「MM/DD」格式的兩個日期的任何標準 – bilal
查詢已更改 – valex
感謝您更新的查詢,並且在使用此查詢之後,我的問題幾乎可以解決,除了一種情況。現在的問題是,如果用戶輸入的日期小於FROM日期,那麼應用程序正在返回incorect結果。例如,如果用戶在此情況下輸入標準FROM date:12/04和TO date:01/03(即他希望查看從12月4日到03年1月的結果),則查詢未返回正確結果 – bilal