Hướng dẫn mysql datediff years age - mysql dateiff năm tuổi

Tôi có một vấn đề liên quan đến chức năng datediff MySQL, tôi có thể sử dụng nó và nó rất đơn giản. Nhưng tôi không hiểu cách sử dụng nó để thu thập sự khác biệt trong trường bảng. Ví dụ.

Tôi có một cột dob và tôi muốn viết một truy vấn sẽ làm một cái gì đó như

select dateDiff[current_timeStamp,dob] 
from sometable 'here dob is the table column

Ý tôi là tôi muốn sự khác biệt so với thời gian ngày hiện tại đến trường bảng dob, mỗi kết quả truy vấn là sự khác biệt, tuổi của người dùng.

Hỏi ngày 5 tháng 9 năm 2009 lúc 14:54Sep 5, 2009 at 14:54

1

Ý bạn là như thế này?

SELECT DATE_FORMAT[FROM_DAYS[DATEDIFF[NOW[], dob]], "%Y"]+0 AS age from sometable

[Source]

Đã trả lời ngày 5 tháng 9 năm 2009 lúc 15:17Sep 5, 2009 at 15:17

Nadia Alramlinadia AlramliNadia Alramli

108K35 Huy hiệu vàng170 Huy hiệu bạc151 Huy hiệu đồng35 gold badges170 silver badges151 bronze badges

3

Bạn có thể làm điều này

SELECT TIMESTAMPDIFF[YEAR, date_of_birth, NOW[]] ASage

SELECT DATE_FORMAT[FROM_DAYS[DATEDIFF[NOW[], dob]], "%Y"]+0 AS age from sometable
0

Hoạt động mọi lúc.

Đã trả lời ngày 11 tháng 3 năm 2014 lúc 6:57Mar 11, 2014 at 6:57

Chủ nhật Ikpesunday IkpeSunday Ikpe

8369 Huy hiệu bạc16 Huy hiệu Đồng9 silver badges16 bronze badges

0

Nếu bạn muốn, đối với mỗi người dùng, hãy hiển thị tuổi theo năm, làm

select name,extract[year from [from_days[dateDiff[current_timestamp,dob]]]] 
       from sometable;

Đã trả lời ngày 5 tháng 9 năm 2009 lúc 15:21Sep 5, 2009 at 15:21

Martin v. Löwismartin v. LöwisMartin v. Löwis

122K17 Huy hiệu vàng193 Huy hiệu bạc234 Huy hiệu đồng17 gold badges193 silver badges234 bronze badges

2

Nếu tôi hiểu nhận xét của bạn về các câu trả lời trước đó, cột ngày sinh không thực sự là giá trị

SELECT DATE_FORMAT[FROM_DAYS[DATEDIFF[NOW[], dob]], "%Y"]+0 AS age from sometable
1 mà là một chuỗi ở định dạng m/d/y. Tôi thực sự khuyên bạn nên thay đổi điều này; Nó làm chậm bất kỳ tính toán ngày nào bạn muốn làm và bạn có nguy cơ các giá trị ngày không hợp lệ được nhập vào cột.strongly recommend you change this; it slows down any date computations you want to do and you risk invalid date values getting entered into the column.

Tôi nghĩ rằng đây là những gì bạn cần. Nó sử dụng hàm

SELECT DATE_FORMAT[FROM_DAYS[DATEDIFF[NOW[], dob]], "%Y"]+0 AS age from sometable
2 và thuật toán để tính toán độ tuổi từ tài liệu MySQL:

SELECT YEAR[CURDATE[]] - YEAR[STR_TO_DATE[dob, '%m/%d/%Y']]
- [RIGHT[CURDATE[], 5] < RIGHT[STR_TO_DATE[dob, '%m/%d/%Y'], 5]] AS age
FROM sometable;

Đã trả lời ngày 5 tháng 9 năm 2009 lúc 21:06Sep 5, 2009 at 21:06

Ken Keenanken KeenanKen Keenan

9.6665 Huy hiệu vàng30 Huy hiệu bạc48 Huy hiệu Đồng5 gold badges30 silver badges48 bronze badges

Tôi nghĩ điều này sẽ giúp

SELECT DATE_FORMAT[FROM_DAYS[DATEDIFF[NOW[], dob]], "%Y"]+0 AS age from sometable
3

Lưu ý: Đưa d.o.b ở định dạng chính xác, ví dụ:

SELECT DATE_FORMAT[FROM_DAYS[DATEDIFF[NOW[], dob]], "%Y"]+0 AS age from sometable
4

Marko

8.9134 Huy hiệu vàng32 Huy hiệu bạc45 Huy hiệu Đồng4 gold badges32 silver badges45 bronze badges

Đã trả lời ngày 2 tháng 9 năm 2013 lúc 14:02Sep 2, 2013 at 14:02

Thử cái này

SELECT DATEDIFF[CURDATE[], '2014-02-14'];

Đã trả lời ngày 15 tháng 8 năm 2015 lúc 11:12Aug 15, 2015 at 11:12

select truncate[datediff[curdate[],dob]/365.25,0] from table;

Đã trả lời ngày 17 tháng 5 năm 2016 lúc 14:15May 17, 2016 at 14:15

Bài Viết Liên Quan

Chủ Đề