MySQL經典練習題(八)

2021-10-08 16:07:45 字數 2887 閱讀 8259

-- 40. 查詢各學生的年齡,只按年份來算

select student.sid as 學生編號,student.sname  as  學生姓名,

timestampdiff(year,student.sage,curdate()) as 學生年齡

from student;

-- 函式說明

timestampdiff(interval,datetime_expr1,datetime_expr2)。

-- timestampdiff函式和datediff函式說明

timestampdiff(interval,datetime_expr1,datetime_expr2)。

說明:-- 返回日期或日期時間表示式datetime_expr1 和datetime_expr2the 之間的整數差。

-- 為datetime_expr2 - datetime_expr1

-- 其結果的單位由interval 引數給出。該引數必須是以下值的其中乙個:

-- frac_second。表示間隔是毫秒

-- second。秒

-- minute。分鐘

-- hour。小時

-- day。天

-- week。星期

-- month。月

-- quarter。季度

-- year。年

例如:timestampdiff(month,datetime_expr1,datetime_expr2)

表示datetime_expr2 - datetime_expr1的月數

datediff(datetime_expr1,datetime_expr2)函式

計算datetime_expr1-datetime_expr2之間差多少天(和timestampdiff相減相反)

獲取當前日期和時間

-- now() -->獲取當前日期和時間 2020-07-29 19:25:57

-- curdate() -->獲取當前日期 2020-07-29

-- 41. 按照出生日期來算,當前月日 < 出生年月的月日則,年齡減一

select sname,date_format(now(), '%y') - date_format(sage, '%y') - 

(case when (date_format(now(), '00-%m-%d') < date_format(sage, '00-%m-%d'))

then 1 else 0 end) as 年齡

from student;

date_format 和 timestampdiff 的區別

date_format 可以單獨提取日期,例如年,月,日等

語法:select date_format(now(),'%y'); 輸出:2020

%a 縮寫星期名

%b 縮寫月名

%c 月,數值

%d 帶有英文本首的月中的天

%d 月的天,數值(00-31)

%e 月的天,數值(0-31)

%f 微秒

%h 小時 (00-23)

%h 小時 (01-12)

%i 小時 (01-12)

%i 分鐘,數值(00-59)

%j 年的天 (001-366)

%k 小時 (0-23)

%l 小時 (1-12)

%m 月名

%m 月,數值(00-12)

%p am 或 pm

%r 時間,12-小時(hh:mm:ss am 或 pm)

%s 秒(00-59)

%s 秒(00-59)

%t 時間, 24-小時 (hh:mm:ss)

%u 周 (00-53) 星期日是一周的第一天

%u 周 (00-53) 星期一是一周的第一天

%v 周 (01-53) 星期日是一周的第一天,與 %x 使用

%v 周 (01-53) 星期一是一周的第一天,與 %x 使用

%w 星期名

%w 周的天 (0=星期日, 6=星期六)

%x 年,其中的星期日是周的第一天,4 位,與 %v 使用

%x 年,其中的星期一是周的第一天,4 位,與 %v 使用

%y 年,4 位

%y 年,2 位

-- 42. 查詢本週過生日的學生

select *

from student

where weekofyear(student.sage) = weekofyear(curdate());

其中:weekofyear 用法

weekofyear(date)函式返回給定日期的週數;

date的日期形式為 2020-07-29

-- 43. 查詢下週過生日的學生

select *

from student

where weekofyear(student.sage) = weekofyear(curdate()) + 1;

-- 44. 查詢本月過生日的學生

select *

from student

where month(student.sage)=month(curdate());

其中:month 用法

month(date)函式返回給定日期的週數;

date的日期形式為 2020-07-29

-- 45. 查詢下月過生日的學生

select *

from student

where month(student.sage)=month(curdate()) + 1;

MySQL查詢練習題

在挑戰實驗1中構建的成績管理系統中,物理老師想要找出分數最高的同學進行表揚,請你找出這個同學並把他的資訊 id 姓名 性別 輸出到路徑 tmp 下的 physics.txt檔案中。同時 tom 的化學成績有異議,需要在原來的基礎上加3分,請更新 tom 的化學成績。wget資料庫 gradesyst...

mysql 簡單練習題

create table student id int,name varchar 20 chinese float,english float,math float insert into student id,name,chinese,english,math values 1,張小明 89,78...

MySQL函式 練習題

1.使用數學函式進行如下運算 1 計算18除以5的餘數。2 將弧度值pi 4轉換為角度值。3 計算9的4次方值 4 保留浮點值3.14159小數點後面2位。2.使用字串函式進行如下運算。1 分別計算字串 hello world 和 university 的長度。2 從字串 nice to meet ...