Re: How can I replace the year of the created_at column with the current year dynamically ?

From: Steve Crawford <scrawford(at)pinpointresearch(dot)com>
To: Arup Rakshit <aruprakshit(at)rocketmail(dot)com>, "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: How can I replace the year of the created_at column with the current year dynamically ?
Date: 2014-07-02 15:42:43
Message-ID: 53B42873.3070105@pinpointresearch.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 07/01/2014 11:27 PM, Arup Rakshit wrote:
> Here is my try :
>
> staging::=> select to_char(created_at,'DD/MM') || '/' ||
> to_char(now(),'YYYY') as when from users;
> when
> ------------
> 24/02/2014
> ...
> 20/02/2014
> (15 rows)
>
> Can the same be done using any other clever trick ?
>

No tricks are springing to mind but a warning is. The above will produce
illegal dates whenever you are an inconvenient number of years past
February 29. I think this will fix that issue:

select created_at + ((extract(year from now()) - extract(year from
created_at)) * '1 year'::interval);

Note that the above returns a date (assuming that created_at is a date).
You may need to apply to_char to format to your desired specification.

Cheers,
Steve

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2014-07-02 16:01:52 Re: Question About Roles
Previous Message sunpeng 2014-07-02 15:42:16 Re: Migration error " invalid byte sequence for encoding "UTF8": 0xff " from mysql 5.5 to postgresql 9.1