Skip to content

Instantly share code, notes, and snippets.

@tyrauber
Created October 27, 2014 22:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save tyrauber/09f3139fda31f5c021d2 to your computer and use it in GitHub Desktop.
Save tyrauber/09f3139fda31f5c021d2 to your computer and use it in GitHub Desktop.
Postgres time_ago_in_words(date) function
CREATE OR REPLACE FUNCTION time_ago_in_words(timestamp with time zone)
RETURNS text
LANGUAGE SQL
AS $$
SELECT CASE
WHEN date_part('year', age(current_timestamp, $1)) = 1 THEN concat(date_part('year', age(current_timestamp, $1)), ' year ago')
WHEN date_part('year', age(current_timestamp, $1)) > 1 THEN concat(date_part('year', age(current_timestamp, $1)), ' years ago')
WHEN date_part('month', age(current_timestamp, $1)) = 1 THEN concat(date_part('month', age(current_timestamp, $1)), ' month ago')
WHEN date_part('month', age(current_timestamp, $1)) > 1 THEN concat(date_part('month', age(current_timestamp, $1)), ' months ago')
WHEN date_part('day', age(current_timestamp, $1)) = 1 THEN concat(date_part('day', age(current_timestamp, $1)), ' day ago')
WHEN date_part('day', age(current_timestamp, $1)) > 1 THEN concat(date_part('day', age(current_timestamp, $1)), ' days ago')
WHEN date_part('hour', age(current_timestamp, $1)) = 1 THEN concat(date_part('hour', age(current_timestamp, $1)), ' hour ago')
WHEN date_part('hour', age(current_timestamp, $1)) > 1 THEN concat(date_part('hour', age(current_timestamp, $1)), ' hours ago')
WHEN date_part('minute', age(current_timestamp, $1)) <= 1 THEN concat(date_part('minute', age(current_timestamp, $1)), ' minute ago')
WHEN date_part('minute', age(current_timestamp, $1)) > 1 THEN concat(date_part('minute', age(current_timestamp, $1)), ' minutes ago')
END;
$$;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment