• 0

[PHP/SQL] Calculate Age


Question

16 answers to this question

Recommended Posts

  • 0

Never done this but could be something along:

age = current_year - birth_year;

if(current_date < birth_date && current_month < birth_month){
    age = age - 1;
}

Assuming you store months with their numerical value which is the better way IMHO.

  • 0

The PHP website is reading straight off the table called members. I havent created any views or anything. Im also using phpMyAdmin to create all the database.

Where would I type in that statement?

SELECT DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(dob, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') < DATE_FORMAT(dob, '00-%m-%d')) AS age

  • 0

You would execute it where required; it's no different to any of the other queries you're executing.

SELECT
    id
  , DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(dob, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') &lt; DATE_FORMAT(dob, '00-%m-%d')) AS age
  , name
FROM
  member

  • 0

You would execute it where required; it's no different to any of the other queries you're executing.

SELECT
    id
  , DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(dob, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') &lt; DATE_FORMAT(dob, '00-%m-%d')) AS age
  , name
FROM
  member

There are no queries. which means im going somethign wrong here :s

Ok... Let me explain this situation a little better.

The database has information on members and their date of birth is stored. I have created a form using PHPRunner which creates the form from the members table. Since age cannot be stored into the database. The software has the ability to input functions or PHP code snippets.

So i was thinking, rather can creating queries, i would use php code instead to calculate the age. The php website can add and view members from the database.

hope this helps

  • 0

you can just use DATEDIFF, and then round the end figure down after dividing the number of days in a year

i.e. my birthday is 11 oct 1984

select datediff('11-oct-1984',now())/365

that query results in 26, which is correct.. i am not a MySQL or PHP Dev so please test this first, it works in MSSQL anyway :p

There are no queries. which means im going somethign wrong here :s

well, how are you going to get the data out of the db? magic? :blink:

you will need to query the db in order to get the DOB, so, why not in your query convert it to the age rather than get php to do it for you on the page?

if you want to get the DOB from the db, and then convert it on the page via PHP.. try this function: http://www.bradino.com/php/calculate-age/ ;)

  • 0

I see.

function getAge($birthday){
  list($day, $month, $year) = explode('/', $birthday);
  $age        = date('Y') - $year;
  $month_diff = date('m') - $month;
  $day_diff   = date('d') - $day;
  if($day_diff &lt; 0 || $month_diff &lt; 0){
    $age--;
  }
  return $age;
}

I was going to suggest DateTime:diff but it is 5.3 dependent.*

*date_diff is an alias for DateTime::diff

  • 0

Thanks guys, got it working. I used the following query to calculate the code

SELECT *, DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(aDoB, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') &lt; DATE_FORMAT(aDoB, '00-%m-%d')) AS age FROM members

And then I saved it as a View. I then created the PHP table using the view and now the age automatically update.

TYVM

  • 0

Thanks guys, got it working. I used the following query to calculate the code

SELECT *, DATE_FORMAT(NOW(), '%Y') - DATE_FORMAT(aDoB, '%Y') - (DATE_FORMAT(NOW(), '00-%m-%d') &lt; DATE_FORMAT(aDoB, '00-%m-%d')) AS age FROM members

And then I saved it as a View. I then created the PHP table using the view and now the age automatically update.

TYVM

looks a bit inefficient, not sure though, would have to test it out

glad it works :)

  • 0

you can just use DATEDIFF, and then round the end figure down after dividing the number of days in a year

i.e. my birthday is 11 oct 1984

select datediff('11-oct-1984',now())/365

that query results in 26, which is correct.. i am not a MySQL or PHP Dev so please test this first, it works in MSSQL anyway :p

Leap years will throw that off so it is inaccurate.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • But we are talking about Elon Musk, no AT&T... I know big companies are evil, but Elon and his companies are in another level which is much more dangerous.
    • New PowerToys update fixes memory leaks and other issues by Taras Buria Another bug-fixing update is available for PowerToys version 0.100. After releasing version 0.100.1 with a bunch of bug fixes and patches, Microsoft pushed version 0.100.2 to address two important issues with one of Command Palette Dock's features. With PowerToys 0.100.2, Microsoft fixed the performance meter displaying incorrect values and memory leaks, which are particularly unwanted things in the current situation with overpriced PC hardware. Here is the changelog: Reverted a Performance Monitor dock refresh change that forced item refreshes on every metric update Fixed a memory leak in the Performance Monitor dock extension by reusing stable network upload/download band items instead of creating new list items on each refresh For those unfamiliar, Command Palette Dock is a relatively new addition to PowerToys. It is a taskbar-like tool that you can keep on top of the screen to pin various useful widgets, commands, and more. It can display time, weather, your PC's performance metrics, and more. Microsoft introduced the Command Palette Dock in March 2026 in PowerToys 0.98. Microsoft has dedicated documentation for Command Palette Dock, and you can check it out on the official Microsoft Learn website. You can update PowerToys to the latest version by going to Settings > General and clicking "Check for updates." Alternatively, you can download the installer from GitHub using this link. In other news, Microsoft is working on a new window-management utility for PowerToys. Called Alt Window Cycle, it will let you use the Alt + ` shortcut to switch between different windows in a single app. You can learn more about the tool here.
    • You did take leaf out of Trumps book already and had brexit - only to harm yourself. The same goes with this AI nonsense. The obvious solution for these companies is to move their head office to Brussels. I can see quite much irony there... 🙂
    • Thank gawd AT&T never worked with the US gov....
    • Wonder if they are trying to slow down Linux traction (not saying this is the only factor) in the consumer space. With the most pressure probably being steam deck/box, etc.
  • Recent Achievements

    • First Post
      OffsetAbs earned a badge
      First Post
    • Reacting Well
      OffsetAbs earned a badge
      Reacting Well
    • First Post
      Kolakid60 earned a badge
      First Post
    • One Month Later
      xvvxcvv earned a badge
      One Month Later
    • Week One Done
      xvvxcvv earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      422
    2. 2
      +Edouard
      181
    3. 3
      PsYcHoKiLLa
      136
    4. 4
      neufuse
      71
    5. 5
      Steven P.
      71
  • Tell a friend

    Love Neowin? Tell a friend!