Hướng dẫn mysql calculator - máy tính mysql

Nếu tôi có một ngày sinh được lưu trữ trong một bảng dưới dạng

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t 
8 và tôi trừ nó từ ngày hiện tại, ngày nào được trả về?

Làm thế nào tôi có thể sử dụng định dạng được trả lại này để tính độ tuổi của ai đó?

Ben

50.6K36 Huy hiệu vàng124 Huy hiệu bạc143 Huy hiệu đồng36 gold badges124 silver badges143 bronze badges36 gold badges124 silver badges143 bronze badges

Hỏi ngày 24 tháng 4 năm 2011 lúc 21:40Apr 24, 2011 at 21:40Apr 24, 2011 at 21:40

user559142user559142user559142user559142

11.8K48 Huy hiệu vàng115 Huy hiệu bạc179 Huy hiệu đồng48 gold badges115 silver badges179 bronze badges48 gold badges115 silver badges179 bronze badges

3

Nếu giá trị được lưu trữ dưới dạng loại dữ liệu DateTime:

SELECT YEAR(CURRENT_TIMESTAMP) - YEAR(dob) - (RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(dob, 5)) as age 
  FROM YOUR_TABLE

Ít chính xác hơn khi bạn xem xét những năm bước nhảy:

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t 

Đã trả lời ngày 24 tháng 4 năm 2011 lúc 22:24Apr 24, 2011 at 22:24Apr 24, 2011 at 22:24

OMG Poniesomg PoniesOMG PoniesOMG Ponies

318K79 Huy hiệu vàng511 Huy hiệu bạc494 Huy hiệu đồng79 gold badges511 silver badges494 bronze badges79 gold badges511 silver badges494 bronze badges

9

select *,year(curdate())-year(dob) - (right(curdate(),5) < right(dob,5)) as age from your_table

Theo cách này, bạn xem xét thậm chí tháng và ngày sinh để có tính độ tuổi chính xác hơn.

Đã trả lời ngày 24 tháng 4 năm 2011 lúc 22:16Apr 24, 2011 at 22:16Apr 24, 2011 at 22:16

Nicola Cossunicola CossuNicola CossuNicola Cossu

53K15 Huy hiệu vàng91 Huy hiệu bạc97 Huy hiệu Đồng15 gold badges91 silver badges97 bronze badges15 gold badges91 silver badges97 bronze badges

4

SELECT TIMESTAMPDIFF (YEAR, YOUR_COLUMN, CURDATE()) FROM YOUR_TABLE AS AGE

Kiểm tra hình ảnh demo bên dưới

Đơn giản nhưng thanh lịch ..

MAZ

75010 Huy hiệu bạc17 Huy hiệu đồng10 silver badges17 bronze badges10 silver badges17 bronze badges

Đã trả lời ngày 22 tháng 6 năm 2016 lúc 3:31Jun 22, 2016 at 3:31Jun 22, 2016 at 3:31

select floor(datediff (now(), birthday)/365) as age

Đã trả lời ngày 24 tháng 4 năm 2011 lúc 22:11Apr 24, 2011 at 22:11Apr 24, 2011 at 22:11

lobster1234lobster1234lobster1234lobster1234

7.63925 Huy hiệu bạc29 Huy hiệu đồng25 silver badges29 bronze badges25 silver badges29 bronze badges

2

Simply:

DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(`birthDate`)), '%Y')+0 AS age

Đã trả lời ngày 15 tháng 2 năm 2013 lúc 9:56Feb 15, 2013 at 9:56Feb 15, 2013 at 9:56

DamonSsondamonssonDamonssonDamonsson

1.53314 Huy hiệu bạc25 Huy hiệu đồng14 silver badges25 bronze badges14 silver badges25 bronze badges

1

Vì câu hỏi đang được gắn thẻ cho

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t 
9, tôi có triển khai sau đây phù hợp với tôi và tôi hy vọng các lựa chọn thay thế tương tự sẽ có mặt cho các RDBM khác. Đây là SQL:
select YEAR(now()) - YEAR(dob) - ( DAYOFYEAR(now()) < DAYOFYEAR(dob) ) as age 
from table 
where ...

Đã trả lời ngày 20 tháng 3 năm 2013 lúc 8:18Mar 20, 2013 at 8:18Mar 20, 2013 at 8:18

Mickeymoonmickeymoonmickeymoonmickeymoon

4.6605 Huy hiệu vàng30 Huy hiệu bạc53 Huy hiệu Đồng5 gold badges30 silver badges53 bronze badges5 gold badges30 silver badges53 bronze badges

Thử cái này:

SET @birthday = CAST('1980-05-01' AS DATE);
SET @today = CURRENT_DATE();

SELECT YEAR(@today) - YEAR(@birthday) - 
  (CASE WHEN
    MONTH(@birthday) > MONTH(@today) OR 
    (MONTH(@birthday) = MONTH(@today) AND DAY(@birthday) > DAY(@today)) 
      THEN 1 
      ELSE 0 
  END);

Nó trở lại trong năm nay - năm sinh (người sẽ bao nhiêu tuổi trong năm nay sau sinh nhật) và điều chỉnh dựa trên việc người đó có sinh nhật trong năm nay hay không.

Nó không bị lỗi làm tròn của các phương pháp khác được trình bày ở đây.

Thích nghi tự do từ đây

Đã trả lời ngày 24 tháng 4 năm 2011 lúc 22:50Apr 24, 2011 at 22:50Apr 24, 2011 at 22:50

SklivvzsklivvzSklivvzSklivvz

30K24 Huy hiệu vàng118 Huy hiệu bạc169 Huy hiệu đồng24 gold badges118 silver badges169 bronze badges24 gold badges118 silver badges169 bronze badges

Đơn giản chỉ cần làm

SELECT YEAR(CURRENT_TIMESTAMP) - YEAR(dob) - (RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(dob, 5)) as age 
  FROM YOUR_TABLE
0

ngày sinh là tên trường giữ tên ngày sinh, hãy từ chối () từ năm () chỉ huy trừ năm () từ trường ngày sinh

Đã trả lời ngày 14 tháng 7 năm 2017 lúc 15:09Jul 14, 2017 at 15:09Jul 14, 2017 at 15:09

1

Đây là cách tính độ tuổi trong MySQL:

SELECT YEAR(CURRENT_TIMESTAMP) - YEAR(dob) - (RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(dob, 5)) as age 
  FROM YOUR_TABLE
1

Đã trả lời ngày 10 tháng 2 năm 2012 lúc 8:13Feb 10, 2012 at 8:13Feb 10, 2012 at 8:13

Mosty Mostachomosty MostachoMosty MostachoMosty Mostacho

41.7K14 Huy hiệu vàng93 Huy hiệu bạc123 Huy hiệu đồng14 gold badges93 silver badges123 bronze badges14 gold badges93 silver badges123 bronze badges

0

Bạn có thể tạo một chức năng để làm điều đó:

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t 
0

Bây giờ, bạn có thể nhận được tuổi từ một ngày:

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t 
1

Nếu bạn hẹn hò ở định dạng y-m-d h: i: s, bạn có thể làm điều này:

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t 
2

Bạn có thể sử dụng lại chức năng này ở bất cứ đâu;)

Đã trả lời ngày 26 tháng 9 năm 2012 lúc 15:09Sep 26, 2012 at 15:09Sep 26, 2012 at 15:09

IdealMindidealMindIdealmindIdealmind

1.24815 huy hiệu bạc8 Huy hiệu đồng15 silver badges8 bronze badges15 silver badges8 bronze badges

1

Tôi thích sử dụng một chức năng theo cách này.

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t 
3

Bây giờ để sử dụng

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t 
4

HOẶC

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t 
5

Đã trả lời ngày 15 tháng 2 năm 2013 lúc 0:23Feb 15, 2013 at 0:23Feb 15, 2013 at 0:23

Có hai cách để làm điều đó:

1-

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t 
6

2-

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t 
7

Đã trả lời ngày 23 tháng 8 năm 2017 lúc 9:18Aug 23, 2017 at 9:18Aug 23, 2017 at 9:18