SQL實現按照年月查詢每天的日期

2021-09-29 08:21:03 字數 2798 閱讀 5973

使用資料庫mysql

應用場景:通過年月查詢出這個月每一天的日期,特別是在報表開發時可以用到,用於顯示每天的情況,按月查詢

1、要按月輸出所有的日期,我們就要知道每一天的號數,現在我們要知道每個月最大有31天,我們需要有這樣的資料集合;

select

1union

allselect

2union

allselect

3union

allselect

4union

allselect

5union

allselect

6union

allselect

7union

allselect

8union

allselect

9union

allselect

10union

allselect

11union

allselect

12union

allselect

13union

allselect

14union

allselect

15union

allselect

16union

allselect

17union

allselect

18union

allselect

19union

allselect

20union

allselect

21union

allselect

22union

allselect

23union

allselect

24union

allselect

25union

allselect

26union

allselect

27union

allselect

28union

allselect

29union

allselect

30union

allselect

31

2、我們要知道每個月有多少天,這樣我們就可以控制取的號數了,取的號數是小於等於這個最大號數的;

select

day( last_day( str_to_date(

'2019-10'

,'%y-%m'))

)

3、當我們知道了上面的兩個部分的值,我們就可以這樣計算了;

迴圈取第乙個號數的資料集合,資料集合的值小於等於最大號數的值,這個集合就是這個集合的所有號數,我們再去將號數和年月拼接列印就是完整的年月日集合了;

select date_format( adddate( y.yearmonth, x.d -1)

,'%y-%m-%d'

) newdate

from

(select

1as d union

allselect

2union

allselect

3union

allselect

4union

allselect

5union

allselect

6union

allselect

7union

allselect

8union

allselect

9union

allselect

10union

allselect

11union

allselect

12union

allselect

13union

allselect

14union

allselect

15union

allselect

16union

allselect

17union

allselect

18union

allselect

19union

allselect

20union

allselect

21union

allselect

22union

allselect

23union

allselect

24union

allselect

25union

allselect

26union

allselect

27union

allselect

28union

allselect

29union

allselect

30union

allselect

31) x,(

select concat(

'2019-10'

,'-01'

)as yearmonth ,

day( last_day( str_to_date(

'2019-10'

,'%y-%m'))

)aslast

) ywhere x.d <= y.

last

到這裡就完成了按月份週期性查詢日期的操作了。

實現統計的年,月,日

時間外掛程式用的mydate97,我用yii框架寫的 最終實現的結果為 如果選擇時間間隔在 30 天之內,則展示這三十天中每天的資料,如果時間間隔 大於30天小於2年,則展示的是以月份為單位的資料,如果時間間隔大於兩年,展示的是以年份為單位的資料。以下為封裝的方法,之前用highchars做的統計 ...

sql查詢每天整點時間的資料

資料庫表裡有多個時間資料,只想取每天5分鐘 10分鐘 1小時 4小時整點的資料,其他時間點的不要,sql可以這樣寫 postgresql log time的型別為timestamp 5min整點 select log time from where mod extract minute from l...

OC 年月日選擇器及年月選擇器的實現

1.建立繼承自upview這個檢視彈出類的時間選擇檢視類datepickerview,upview類的內容參照鏈結upview import upview.h ns assume nonnull begin typedef ns enum nsinteger,datestyle protocol d...