MySql查詢本週或下週過生日的人

2021-10-06 11:45:31 字數 2432 閱讀 2932

這幾題我想了很久,因此記錄一下.

做題思路,先將學生的生日年份統一成當前時間的年份,這樣就可以直接用相差的天數判斷是否本週或者下週過生日了

首先還是來建表加資料吧

-- 建立**

create

table student(

s_id varchar(20

)not

null

, s_name varchar

(255

)not

null

default'',

s_birth varchar(20

)not

null

default'',

s_*** varchar(10

)not

null

default'')

-- 插入資料

insert

into student values

('01'

,'趙雷'

,'1990-01-01'

,'男'),

('02'

,'錢電'

,'1990-12-21'

,'男'),

('03'

,'孫風'

,'1990-05-20'

,'男'),

('04'

,'李雲'

,'1990-08-06'

,'男'),

('05'

,'周梅'

,'1991-12-01'

,'女'),

('06'

,'吳蘭'

,'1992-03-01'

,'女'),

('07'

,'鄭竹'

,'1989-07-01'

,'女'),

('08'

,'王菊'

,'1990-01-20'

,'女'),

('09'

,'張飛'

,'1990-9-25'

,'男'),

('10'

,'劉備'

,'1990-01-25'

,'男'),

('11'

,'關羽'

,'1990-01-25'

,'男'),

('12'

,'金毛獅王'

,'1850-05-24'

,'男'),

('13'

,'黃蓉'

,'1890-05-31'

,'女'),

('14'

,'郭靖'

,'1990-06-06'

,'男'),

('15'

,'瀟瀟'

,'1995-06-07'

,'女'

);

1.查詢本週過生日的學生

select a.s_id,a.s_name from

(select s_id,s_name,datediff(curdate(

),adddate(s_birth,

interval

year

(curdate())

-year

(s_birth)

year

)) diff from student

) awhere a.diff < dayofweek(curdate())

and a.diff >= dayofweek(curdate())

-7;-- 結果展示

+------+----------+

| s_id | s_name |

+------+----------+|12

| 金毛獅王 |

+------+----------+

2.查詢下週過生日的學生

select a.s_id,a.s_name from

(select s_id,s_name,datediff(adddate(s_birth,

interval

year

(curdate())

-year

(s_birth)

year

),curdate(

)) diff from student

) awhere a.diff >(7

- dayofweek(curdate())

)and a.diff <=

14- dayofweek(curdate())

;-- 結果展示

+------+--------+

| s_id | s_name |

+------+--------+|13

| 黃蓉 ||14

| 郭靖 |

+------+--------+

mysql 最近過生日

需求 檢視最近20天過生日的客戶 思路 分兩種情況,第一種 客戶月日在現在月日之後,計算今年生日到現在的天數。第二種 客戶月日在現在月日之前,計算明年生日到現在的天數。select from t investor where birthday is not null and case when da...

javascritp 實現上週,下週,本週查詢

執行周查詢 type 表示查詢的種類 上週 1 本週 0 下週 1 function doweekquery type else 獲得周一時間 sheetmanform.queryplanstarttimebegin.value getdate vmonday 00 00 獲得週日時間 sheetm...

javascritp 實現上週,下週,本週查詢

執行周查詢 type 表示查詢的種類 上週 1 本週 0 下週 1 function doweekquery type else 獲得周一時間 sheetmanform.queryplanstarttimebegin.value getdate vmonday 00 00 獲得週日時間 sheetm...