Computer >> Máy Tính >  >> Lập trình >> MySQL

Tôi có thể lấy Tuổi bằng cột Ngày sinh trong truy vấn MySQL không?

Để lấy Tuổi bằng cột Ngày sinh trong truy vấn MySQL, bạn có thể sử dụng dateiff (). Đầu tiên chúng ta hãy tạo một bảng:

 mysql> tạo bảng DemoTable (Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, DateOfBirth date); Truy vấn OK, 0 hàng bị ảnh hưởng (1,46 giây) 

Sau đây là truy vấn để chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert:

 mysql> chèn vào các giá trị DemoTable (DateOfBirth) ('2010-01-21'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,14 giây) mysql> chèn vào giá trị DemoTable (DateOfBirth) ('1993-04-02'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,13 giây) mysql> chèn vào giá trị DemoTable (DateOfBirth) ('1999-12-01'); Truy vấn OK, 1 hàng bị ảnh hưởng (1,53 giây) mysql> chèn vào giá trị DemoTable (DateOfBirth) ( '1998-11-16'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,19 giây) mysql> chèn vào các giá trị DemoTable (DateOfBirth) ('2004-03-19'); Truy vấn OK, 1 hàng bị ảnh hưởng (0,11 giây)  

Sau đây là truy vấn để hiển thị các bản ghi từ bảng bằng lệnh select:

 mysql> select * từ DemoTable; 

Điều này sẽ tạo ra kết quả sau:

 + ---- + ------------- + | Id | DateOfBirth | + ---- + ------------- + | 1 | 2010-01-21 || 2 | 1993-04-02 || 3 | 1999-12-01 || 4 | 1998-11-16 || 5 | 2004-03-19 | + ---- + ------------- + 5 hàng trong bộ (0,00 giây) 

Bây giờ chúng ta hãy lấy Tuổi bằng cột ngày sinh với phương thức DATEDIFF ():

 mysql> chọn cast (DATEDIFF (curdate (), DateOfBirth) / 365,25 AS UNSIGNED) AS AGE từ DemoTable; 

Điều này sẽ tạo ra kết quả sau:

 + ------ + | TUỔI | + ------ + | 9 || 26 || 19 || 20 || 15 | + ------ + 5 hàng trong bộ (0,00 giây) 

Bây giờ chúng ta hãy viết một truy vấn để lấy DOB và ID trong đó Tuổi từ 20 đến 26:

 mysql> SELECT * FROM DemoTable WHERE NĂM (CURDATE ()) - YEAR (DateOfBirth) GIỮA 20 VÀ 26; 

Điều này sẽ tạo ra kết quả sau:

 + ---- + ------------- + | Id | DateOfBirth | + ---- + ------------- + | 2 | 1993-04-02 || 3 | 1999-12-01 || 4 | 1998-11-16 | + ---- + ------------- + 3 hàng trong bộ (0,00 giây)