這幾題我想了很久,因此記錄一下.
做題思路,先將學生的生日年份統一成當前時間的年份,這樣就可以直接用相差的天數判斷是否本週或者下週過生日了
首先還是來建表加資料吧
-- 建立**
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...