Thread: First day of month, last day of month

First day of month, last day of month

From
"Nacef LABIDI"
Date:
Hi all,<br /><br />I want to select data from a table according to a date column in my table. I want to select all the
rowswhich have date in the current month. So is there a way to get from the actual date the first day and the last day
ofthe month or is there a better method to retrieve all the rows with dates in the current month.<br /><br />Thanks to
all<br/> 

Re: First day of month, last day of month

From
Frank Bax
Date:
Nacef LABIDI wrote:
> is there a better method to retrieve all 
> the rows with dates in the current month.


select * from mytable where extract(month from mydate) = extract(month 
from now()) and extract(year from mydate) = extract(year from now());


Re: First day of month, last day of month

From
"Bart Degryse"
Date:
select * from mytable where date_trunc('month', mydate) = date_trunc('month', now());<br /><br /><br />>>>
FrankBax <fbax@sympatico.ca> 2008-04-24 15:06 >>><br />Nacef LABIDI wrote:<br />> is there a better
methodto retrieve all <br />> the rows with dates in the current month.<br /><br /><br />select * from mytable where
extract(monthfrom mydate) = extract(month <br />from now()) and extract(year from mydate) = extract(year from
now());<br/><br />-- <br />Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)<br />To make changes to your
subscription:<br/><a
href="http://www.postgresql.org/mailpref/pgsql">http://www.postgresql.org/mailpref/pgsql</a>-sql<br/> 

Re: First day of month, last day of month

From
"A. Kretschmer"
Date:
am  Thu, dem 24.04.2008, um 14:59:47 +0200 mailte Nacef LABIDI folgendes:
> Hi all,
> 
> I want to select data from a table according to a date column in my table. I
> want to select all the rows which have date in the current month. So is there a
> way to get from the actual date the first day and the last day of the month or

test=*# select date_trunc('month', current_date), date_trunc('month',
current_date)+'1month'::interval-'1day'::interval;     date_trunc       |        ?column?
 
------------------------+------------------------2008-04-01 00:00:00+02 | 2008-04-30 00:00:00+02



-- 
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net


Re: First day of month, last day of month

From
Frank Bax
Date:
Frank Bax wrote:
> Nacef LABIDI wrote:
>> is there a better method to retrieve all the rows with dates in the 
>> current month.
> 
> 
> select * from mytable where extract(month from mydate) = extract(month 
> from now()) and extract(year from mydate) = extract(year from now());


Sorry; I was not thinking clearly - date_trunc is better for this:

select * from mytable where date_trunc('month',mydate) = 
date_trunc('month',now());


Re: First day of month, last day of month

From
Colin Wetherbee
Date:
Frank Bax wrote:
> Frank Bax wrote:
>> Nacef LABIDI wrote:
>>> is there a better method to retrieve all the rows with dates in the 
>>> current month.
>>
>> select * from mytable where extract(month from mydate) = extract(month 
>> from now()) and extract(year from mydate) = extract(year from now());
> 
> Sorry; I was not thinking clearly - date_trunc is better for this:
> 
> select * from mytable where date_trunc('month',mydate) = 
> date_trunc('month',now());

I have some code that uses extract() for this sort of thing.  Would you 
mind explaining how date_trunc() is better for this?

Most of my extract() results end up in <select> drop-down boxes in HTML.

Thanks.

Colin



Re: First day of month, last day of month

From
Erik Jones
Date:
On Apr 24, 2008, at 9:15 AM, Colin Wetherbee wrote:

> Frank Bax wrote:
>> Frank Bax wrote:
>>> Nacef LABIDI wrote:
>>>> is there a better method to retrieve all the rows with dates in
>>>> the current month.
>>>
>>> select * from mytable where extract(month from mydate) =
>>> extract(month from now()) and extract(year from mydate) =
>>> extract(year from now());
>> Sorry; I was not thinking clearly - date_trunc is better for this:
>> select * from mytable where date_trunc('month',mydate) =
>> date_trunc('month',now());
>
> I have some code that uses extract() for this sort of thing.  Would
> you mind explaining how date_trunc() is better for this?
>
> Most of my extract() results end up in <select> drop-down boxes in
> HTML.


extract will pull specific date unit value out of a given date/
timestamp/interval.  date_trunc will "round" a given date/timestamp
down to the given unit.

extract(month from now()) -> 4

date_trunc('month', now()) -> 2008-04-01 00:00:00-05

I typically find date_trunc much more useful but I may just think that
because I've been writing partitioning code a lot lately.

Erik Jones

DBA | Emma®
erik@myemma.com
800.595.4401 or 615.292.5888
615.292.0777 (fax)

Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com





Re: First day of month, last day of month

From
"Bart Degryse"
Date:
Don't know whether it's better, but it's shorter.
With extract you have to make the extraction for both year and month (unless cases where either one doesn't matter)
With date_trunc('month', ...) you throw away anything smaller than month in one step.
I suppose having to call the function date_trunc twice and extract 4 times in the given example could make
the date_trunc version slightly faster.
Just wondering how many times you would have to do it before noticing the "speedup".


>>> Colin Wetherbee <cww@denterprises.org> 2008-04-24 16:15 >>>
Frank Bax wrote:
> Frank Bax wrote:
>> Nacef LABIDI wrote:
>>> is there a better method to retrieve all the rows with dates in the
>>> current month.
>>
>> select * from mytable where extract(month from mydate) = extract(month
>> from now()) and extract(year from mydate) = extract(year from now());
>
> Sorry; I was not thinking clearly - date_trunc is better for this:
>
> select * from mytable where date_trunc('month',mydate) =
> date_trunc('month',now());

I have some code that uses extract() for this sort of thing.  Would you
mind explaining how date_trunc() is better for this?

Most of my extract() results end up in <select> drop-down boxes in HTML.

Thanks.

Colin


--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql

Re: First day of month, last day of month

From
"Nacef LABIDI"
Date:
Actually I want to select all rows whith dates between first day of the month 00:00:00 and last date of the month
23:59:59<br/><br /><div class="gmail_quote">On Thu, Apr 24, 2008 at 4:15 PM, Colin Wetherbee <<a
href="mailto:cww@denterprises.org">cww@denterprises.org</a>>wrote:<br /><blockquote class="gmail_quote"
style="border-left:1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Frank Bax wrote:<br
/><blockquoteclass="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"> Frank Bax
wrote:<br/><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div
class="Ih2E3d">Nacef LABIDI wrote:<br /><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204,
204);padding-left: 1ex;"> is there a better method to retrieve all the rows with dates in the current month.<br
/></blockquote><br/></div> select * from mytable where extract(month from mydate) = extract(month from now()) and
extract(yearfrom mydate) = extract(year from now());<br /></blockquote><br /> Sorry; I was not thinking clearly -
date_truncis better for this:<br /><br /> select * from mytable where date_trunc('month',mydate) =
date_trunc('month',now());<br/></blockquote><br /> I have some code that uses extract() for this sort of thing.  Would
youmind explaining how date_trunc() is better for this?<br /><br /> Most of my extract() results end up in
<select>drop-down boxes in HTML.<br /><br /> Thanks.<br /><br /> Colin<br /><font color="#888888"><br /><br /> --
<br/> Sent via pgsql-sql mailing list (<a href="mailto:pgsql-sql@postgresql.org"
target="_blank">pgsql-sql@postgresql.org</a>)<br/> To make changes to your subscription:<br /><a
href="http://www.postgresql.org/mailpref/pgsql-sql"target="_blank">http://www.postgresql.org/mailpref/pgsql-sql</a><br
/></font></blockquote></div><br/> 

Re: First day of month, last day of month

From
"Bart Degryse"
Date:
Well, that's what it does afaikt.<br /><br />>>> "Nacef LABIDI" <nacef.l@gmail.com> 2008-04-24 16:43
>>><br/>Actually I want to select all rows whith dates between first day of the month 00:00:00 and last date
ofthe month 23:59:59<br /><br /><div class="gmail_quote">On Thu, Apr 24, 2008 at 4:15 PM, Colin Wetherbee <<a
href="mailto:cww@denterprises.org">cww@denterprises.org</a>>wrote:<br /><blockquote class="gmail_quote"
style="PADDING-LEFT:1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">Frank Bax wrote:<br
/><blockquoteclass="gmail_quote" style="PADDING-LEFT: 1ex; BORDER-LEFT: rgb(204,204,204) 1px solid">Frank Bax wrote:<br
/><blockquoteclass="gmail_quote" style="PADDING-LEFT: 1ex; BORDER-LEFT: rgb(204,204,204) 1px solid"><div
class="Ih2E3d">NacefLABIDI wrote:<br /><blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; BORDER-LEFT:
rgb(204,204,204)1px solid">is there a better method to retrieve all the rows with dates in the current month.<br
/></blockquote><br/></div>select * from mytable where extract(month from mydate) = extract(month from now()) and
extract(yearfrom mydate) = extract(year from now());<br /></blockquote><br />Sorry; I was not thinking clearly -
date_truncis better for this:<br /><br />select * from mytable where date_trunc('month',mydate) =
date_trunc('month',now());<br/></blockquote><br />I have some code that uses extract() for this sort of thing.  Would
youmind explaining how date_trunc() is better for this?<br /><br />Most of my extract() results end up in
<select>drop-down boxes in HTML.<br /><br />Thanks.<br /><br />Colin<br /><font color="#888888"><br /><br />--
<br/>Sent via pgsql-sql mailing list (<a href="mailto:pgsql-sql@postgresql.org"
target="_blank">pgsql-sql@postgresql.org</a>)<br/>To make changes to your subscription:<br /><a
href="http://www.postgresql.org/mailpref/pgsql-sql"target="_blank">http://www.postgresql.org/mailpref/pgsql-sql</a><br
/></font></blockquote></div><br/> 

Re: First day of month, last day of month

From
Terry Lee Tucker
Date:
<p>On Thursday 24 April 2008 10:47, Bart Degryse wrote:<p>> Well, that's what it does afaikt.<p><p>And what does
<spanstyle="font-style:italic;text-decoration:underline;color:#000101">afaikt</span><span style="color:#000101">
mean?</span><p>--<p>Terry Lee Tucker<p>Turbo's IT Manager<p>Turbo, division of Ozburn-Hessey Logistics<p>2251 Jesse
JewellPkwy NE<p>Gainesville, GA 30501<p>Tel: (336) 372-6812 Fax: (336) 372-6812 Cell: (336)
404-6987<p>terry@turbocorp.com<p>www.turbocorp.com

Re: First day of month, last day of month

From
"Scott Marlowe"
Date:
On Thu, Apr 24, 2008 at 8:43 AM, Nacef LABIDI <nacef.l@gmail.com> wrote:
> Actually I want to select all rows whith dates between first day of the
> month 00:00:00 and last date of the month 23:59:59

Then you can just use date_trunc on the values in the database. Plus
if you're using timestamp WITHOUT timezone, you can index on it.

create index table_datefield_month_trunc on table
(date_trunc('month',datefield));
select * from table where
date_trunc('month',timestampfield)='2007-10-01 00:00:00';


Re: First day of month, last day of month

From
"Scott Marlowe"
Date:
On Thu, Apr 24, 2008 at 8:52 AM, Terry Lee Tucker <terry@chosen-ones.org> wrote:
> > On Thursday 24 April 2008 10:47, Bart Degryse wrote:
>
> > Well, that's what it does afaikt.
>
> And what does afaikt mean?

As Far As I Kan Tell?  ???

I'm used to AFAIR, As Far As I Rekall... :)


Re: First day of month, last day of month

From
"Bart Degryse"
Date:
sory, afaikt vas djust a tiping eror. mi apollogys<br /><br />>>> "Scott Marlowe"
<scott.marlowe@gmail.com>2008-04-24 16:56 >>><br />On Thu, Apr 24, 2008 at 8:52 AM, Terry Lee Tucker
<terry@chosen-ones.org>wrote:<br />> > On Thursday 24 April 2008 10:47, Bart Degryse wrote:<br />><br
/>>> Well, that's what it does afaikt.<br />><br />> And what does afaikt mean?<br /><br />As Far As I Kan
Tell? ???<br /><br />I'm used to AFAIR, As Far As I Rekall... :)<br /><br />-- <br />Sent via pgsql-sql mailing list
(pgsql-sql@postgresql.org)<br/>To make changes to your subscription:<br /><a
href="http://www.postgresql.org/mailpref/pgsql">http://www.postgresql.org/mailpref/pgsql</a>-sql<br/> 

Re: First day of month, last day of month

From
"Fernando Hevia"
Date:
 

> -----Mensaje original-----
> De: pgsql-sql-owner@postgresql.org 
> [mailto:pgsql-sql-owner@postgresql.org] En nombre de Scott Marlowe
> 
> Then you can just use date_trunc on the values in the 
> database. Plus if you're using timestamp WITHOUT timezone, 
> you can index on it.
> 

Did not understand this. Are you saying timestamps WITH timezone are NOT
indexable or you mean that you cant build a partial index on a
timestamp-with-time-zone returning function?

Regards,
Fernando.



Re: First day of month, last day of month

From
Erik Jones
Date:
On Apr 24, 2008, at 9:52 AM, Terry Lee Tucker wrote:

> On Thursday 24 April 2008 10:47, Bart Degryse wrote:
>
> > Well, that's what it does afaikt.
>

afaikt -> as far as I can tell.

Erik Jones

DBA | Emma®
erik@myemma.com
800.595.4401 or 615.292.5888
615.292.0777 (fax)

Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com





Re: First day of month, last day of month

From
Erik Jones
Date:
On Apr 24, 2008, at 9:56 AM, Scott Marlowe wrote:

> On Thu, Apr 24, 2008 at 8:52 AM, Terry Lee Tucker <terry@chosen-ones.org
> > wrote:
>>> On Thursday 24 April 2008 10:47, Bart Degryse wrote:
>>
>>> Well, that's what it does afaikt.
>>
>> And what does afaikt mean?
>
> As Far As I Kan Tell?  ???
>
> I'm used to AFAIR, As Far As I Rekall... :)

Or AFAICS, As Far As I Can See

Erik Jones

DBA | Emma®
erik@myemma.com
800.595.4401 or 615.292.5888
615.292.0777 (fax)

Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com





Re: First day of month, last day of month

From
"Scott Marlowe"
Date:
On Thu, Apr 24, 2008 at 9:10 AM, Fernando Hevia <fhevia@ip-tel.com.ar> wrote:
>  > De: pgsql-sql-owner@postgresql.org
>  > [mailto:pgsql-sql-owner@postgresql.org] En nombre de Scott Marlowe
>
> >
>  > Then you can just use date_trunc on the values in the
>  > database. Plus if you're using timestamp WITHOUT timezone,
>  > you can index on it.
>  >
>
>  Did not understand this. Are you saying timestamps WITH timezone are NOT
>  indexable or you mean that you cant build a partial index on a
>  timestamp-with-time-zone returning function?

Correct, timestamptz or timestamp with timezone (timestamptz is the
shorter alias) are not indexable because functions in an index must be
immutable, and date_trunc on a timestamptz is not.


Re: First day of month, last day of month

From
"Scott Marlowe"
Date:
On Thu, Apr 24, 2008 at 9:16 AM, Scott Marlowe <scott.marlowe@gmail.com> wrote:
> On Thu, Apr 24, 2008 at 9:10 AM, Fernando Hevia <fhevia@ip-tel.com.ar> wrote:
>  >  > De: pgsql-sql-owner@postgresql.org
>  >  > [mailto:pgsql-sql-owner@postgresql.org] En nombre de Scott Marlowe
>  >
>  > >
>  >  > Then you can just use date_trunc on the values in the
>  >  > database. Plus if you're using timestamp WITHOUT timezone,
>  >  > you can index on it.
>  >  >
>  >
>  >  Did not understand this. Are you saying timestamps WITH timezone are NOT
>  >  indexable or you mean that you cant build a partial index on a
>  >  timestamp-with-time-zone returning function?
>
>  Correct, timestamptz or timestamp with timezone (timestamptz is the
>  shorter alias) are not indexable because functions in an index must be
>  immutable, and date_trunc on a timestamptz is not.

Note that if you are storing your time stamp as timestamptz, you can
use the "at time zone 'xyz'" construct to create an index, and as long
as you retrieve them with the same construct you'll get to use the
index.

create index test_ts_month_trunc on testtable (date_trunc('month',(ts
at time zone 'MST')));
select * from testtable where date_trunc('month',(ts at time zone
'MST'))='2007-10-01 00:00:00'::timestamp;


Re: First day of month, last day of month

From
"Fernando Hevia"
Date:
 

> -----Mensaje original-----
> De: Scott Marlowe [mailto:scott.marlowe@gmail.com] 
> 
> 
> Note that if you are storing your time stamp as timestamptz, 
> you can use the "at time zone 'xyz'" construct to create an 
> index, and as long as you retrieve them with the same 
> construct you'll get to use the index.
> 
> create index test_ts_month_trunc on testtable 
> (date_trunc('month',(ts at time zone 'MST'))); 
> select * from testtable 
> where date_trunc('month',(ts at time zone 'MST'))='2007-10-01
00:00:00'::timestamp;
> 

I see the point. Thanks for the elaboration.




Re: First day of month, last day of month

From
"Nacef LABIDI"
Date:
It would be rather :

test=*# select date_trunc('month', current_date), date_trunc('month', current_date)+'1month':
:interval-'1sec'::interval;

"2008-04-01 00:00:00+02";"2008-04-30 23:59:59+02"


On Thu, Apr 24, 2008 at 3:15 PM, A. Kretschmer <andreas.kretschmer@schollglas.com> wrote:
am  Thu, dem 24.04.2008, um 14:59:47 +0200 mailte Nacef LABIDI folgendes:
> Hi all,
>
> I want to select data from a table according to a date column in my table. I
> want to select all the rows which have date in the current month. So is there a
> way to get from the actual date the first day and the last day of the month or

test=*# select date_trunc('month', current_date), date_trunc('month', current_date)+'1month'::interval-'1day'::interval;
      date_trunc       |        ?column?
------------------------+------------------------
 2008-04-01 00:00:00+02 | 2008-04-30 00:00:00+02



--
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net

--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql