我是一般的SQL和編程新手,所以我不確定這個語法。我有一張桌子,我想選擇在給定的學期中發生的每一行。營業額將爲1月1日和7月1日。我希望它能顯示當年7月之前或7月之後的所有條目,具體取決於當前月份。我的日期列是sql日期格式。SQL如果當前日期小於或等於7月,則選擇日期1月到7月
0
A
回答
1
如果您使用的是Oracle,您可以在where子句中使用case語句,並利用這樣一個事實,即如果您沒有在Oracle日期明確設置一年,則它將假設當前年份。
select *
from your_table
where case
when trunc(sysdate) > to_date('01-JUL', 'DD-MON') then
to_date('01-JUL', 'DD-MON')
else
to_date('01-JAN', 'DD-MON')
end < date_column;
我要把它留給你使用,確保你沒有得到第一學期的結果,如果當前的日期比7月1日的大。一種方法是採用類似的案例陳述,但我認爲有更清晰的方法來做到這一點。
0
對於MySQL查詢可能看起來像
SELECT *
FROM Table1
WHERE date BETWEEN CASE WHEN CURDATE() < DATE_FORMAT(CURDATE(), '%Y-08-01')
THEN DATE_FORMAT(CURDATE(), '%Y-01-01')
ELSE DATE_FORMAT(CURDATE(), '%Y-08-01') END
AND CASE WHEN CURDATE() < DATE_FORMAT(CURDATE(), '%Y-08-01')
THEN LAST_DAY(DATE_FORMAT(CURDATE(), '%Y-07-01'))
ELSE DATE_FORMAT(CURDATE(), '%Y-12-31') END
它也可以被改寫爲
SELECT *
FROM Table1 CROSS JOIN
(
SELECT CASE WHEN CURDATE() < DATE_FORMAT(CURDATE(), '%Y-08-01')
THEN DATE_FORMAT(CURDATE(), '%Y-01-01')
ELSE DATE_FORMAT(CURDATE(), '%Y-08-01') END start_date,
CASE WHEN CURDATE() < DATE_FORMAT(CURDATE(), '%Y-08-01')
THEN LAST_DAY(DATE_FORMAT(CURDATE(), '%Y-07-01'))
ELSE DATE_FORMAT(CURDATE(), '%Y-12-31') END end_date
) q
WHERE date BETWEEN q.start_date AND q.end_date
這裏是SQLFiddle演示(MySQL的)
+0
@theUnicycleGuy有幫助嗎?你的問題需要更多幫助嗎? – peterm
+0
我把它複製過來,用我自己的而且沒有運氣替換表名和列名。在php MyAdmin的SQL終端中,它一直以紅色突出顯示CURDATE()和DATE_FORMAT()等函數。在這一點上,我可能對此感到滿意。這是我第一個使用SQL的項目 – theUnicycleGuy
相關問題
- 1. 當月和日小於當前日期時選擇記錄
- 2. 選擇日期是小於或等於當前日期
- 3. 選擇當前月份到下個月份的日期範圍日期範圍
- 4. sql查詢基於月結束日期生成月薪日期
- 5. 日期選擇日月年
- 6. jQuery UI日期選擇器功能只選擇年或月或年 - 月 - 日期
- 7. 轉換日期 - 「0713」到「2013年7月」
- 8. Airbnb反應日期範圍選擇器僅顯示當前月份日曆未選擇日期月份日曆
- 9. 如果日期在當前月份之前,則將日期轉換爲當前月份的第一個
- 10. 在月份發生的日期選擇日期選擇日期
- 11. Javascripts dateObject:從5月31日跳到下個月獲取7月1日
- 12. 在本月內選擇日期SQL
- 13. 當前日期,當前月份?
- 14. 如何從當前日期前一個月獲取日期,當前日期是一月?
- 15. 比較日期updated_at到當前月份
- 16. 添加7天到一個月的日期,直到月底sql服務器
- 17. MYSQL:如何從當前日期選擇日期直到未來2個月
- 18. 從當前日曆月和未來11個月獲取日期
- 19. 發送提醒:到期日期前2個月,1個月和1周
- 20. GROUP BY選擇每月定期日期
- 21. 日期增加1個月
- 22. php取得日期-1月
- 23. Mysql查詢結果不大於當前日期的一個月
- 24. SQL查詢 - 基於當前日期的動態月份更改
- 25. 選擇查詢以選擇最近的日期,該日期小於或等於postgresql中的當前日期
- 26. 日期選擇器 - 選擇月/年
- 27. 如何比較字符串日期+一個月當前日期+一個月
- 28. 顯示日期前6個月的日期從combobox選擇
- 29. 如何檢索上月最新日期和當月最新的日期在SQL
- 30. 選擇月份的第一天到當前日期之間的所有日期
你有寫過任何SQL可言?我們希望你向我們展示你的嘗試,所以我們可以提供幫助。就目前來看,沒有表格結構,示例輸入和輸出示例,要幫助你並不容易。 – Oded
你正在使用什麼數據庫(Oracle,MySQL等) – eebbesen
我正在使用mySQL。現在,我只是選擇一切,不管一年,SELECT * FROM'Lessons_Schedule' WHERE'Type' =「ballroom」 – theUnicycleGuy