mysql中對比月 mysql 僅按月和日比較日期

2021-10-12 13:18:34 字數 1331 閱讀 4043

我的foos表中有日期欄位.所以現在我需要從日期間隔中選擇所有foo,但僅比較月份和日期.

例如,我需要選擇2023年1月7日之前和之後10天的所有foo- 12月28日-1月17日或2023年7月10日左右的一周-> 7月3日至7月17日.應僅根據全年的月份和日期進行選擇.

我原始的解決方案

select b_date from foos

where dayofyear(b_date) between

dayofyear('2011-01-07' - interval 10 day) and (dayofyear('2011-01-07' - interval 10 day) + 20)

or dayofyear(b_date) between

(dayofyear('2011-01-07' + interval 10 day) - 20) and dayofyear('2011-01-07' + interval 10 day)

group by foos.id;

解決方法:

如果要查詢日期為2023年12月28日和2023年1月17日的所有日期,則可以使用以下方法:

where datecolumn between '2012-01-07' - interval 10 day

and '2012-01-07' + interval 10 day

對於更一般的問題,我看到了兩種方法.易於編寫,但使用大型foos表可能會很慢:

select f.*

from

foos as f

cross join

( select 32 * month(startdate) + day(startdate)

as startcheck

, 32 * month(enddate) + day(enddate)

as endcheck

from

( select ('2012-01-07' - interval 10 day) as startdate

, ('2012-01-07' + interval 10 day) as enddate

) as c

) as cc

where 32*month(f.datecolumn)+day(f.datecolumn) between startcheck

and endcheck

or startcheck > endcheck

and 32*month(f.datecolumn)+day(f.datecolumn) not between endcheck + 1

and startcheck - 1

標籤:mysql,date

mysql中對比月 Mysql如何按照日期對比資料

phpmyadmin sql dump version 4.0.10.14 主機 localhost 3306 生成日期 2016 08 24 00 16 24 伺服器版本 5.6.30 cll lve php 版本 5.6.20 set sql mode no auto value on zero...

mysql如何快速對比 MySQL快速對比資料技巧

在mysql運維中,研發同事想對比下兩個不同例項上的資料並找出差異,除主鍵外還需要對比每乙個字段,如何做呢?第一種方案,寫程式將兩個例項上的每一行資料取出來進行對比,理論可行,但是對比時間較長。第二種方案,對每一行資料所有字段合併起來,取checksum值,再按照checksum值對比,看著可行,嘗...

mysql月備份 MySQL 備份

備份資料庫 匯出全部資料庫 all databases,a 匯出幾個資料庫。引數後面所有名字參量都被看作資料庫名 databases,b 匯出儲存過程以及自定義函式 routines,r 匯出事件 events,e 不緩衝查詢,直接匯出到標準輸出。預設為開啟狀態,使用 skip quick取消該選項...