Beräkna ålder i MySQL och SQL Server

By . Updated .

Att beräkna någons ålder är lite klurigt i SQL. Använd följande exempel för MS SQL Server och MySQL, så går det enklare.

--
-- Create the table
--
-- DROP TABLE Pet;
CREATE TABLE Pet
(
name CHAR(5),
birth DATETIME
);

INSERT INTO Pet(name, birth) VALUES ('Pilot', '1984-04-27');
INSERT INTO Pet(name, birth) VALUES ('Kaiba', '2001-03-09');
INSERT INTO Pet(name, birth) VALUES ('Ludde', '2004-10-15');

SELECT * FROM Pet;


-- 
-- SQL to calculate age in Microsoft SQL Server
-- http://stackoverflow.com/questions/57599/how-to-calculate-age-in-t-sql-with-years-months-and-days
--
SELECT 
  name, 
  birth, 
  GETDATE(),
  (DATEDIFF(YY, birth, GETDATE()) - CASE WHEN (MONTH(birth) > MONTH(GETDATE())) OR ( MONTH(birth) = MONTH( GETDATE() ) AND DAY(birth) > DAY(GETDATE())) THEN 1 ELSE 0 END) AS age
FROM Pet;

--
-- SQL to calculate age in MySQL
-- also available in the manual
-- http://dev.mysql.com/doc/refman/5.6/en/date-calculations.html
--
SELECT
  name, 
  birth, 
  CURDATE(),
  TIMESTAMPDIFF(YEAR, birth, CURDATE()) AS age
FROM Pet;

Använd forumet om du funderar över något.

Category: sql.