Extract between year *and* month

Started by Sylover 19 years ago7 messagesgeneral
Jump to latest
#1Syl
david.hunter@gmail.com

Hi - I'd like to return search results based on a date range that is
selected by the user :

<select name="date1yy">
<option value="1995-01-01" selected>1995</option>

<select name="date2yy">
<option value="2006-12-31" selected>2006</option>

My SQL is :

select *
from tablename
where title like ('%nith%')
and recall_date between
extract(year from date '1995-01-01')
and extract(year from date '2006-12-31')
order by recall_date

How can I add the MONTH to be included in the between statement ?
If I select 1995 - 2006 it currently only returns rows up to 2005-12-31

THANKS!

#2A. Kretschmer
andreas.kretschmer@schollglas.com
In reply to: Syl (#1)
Re: Extract between year *and* month

am Thu, dem 16.11.2006, um 13:03:20 -0800 mailte One folgendes:

Hi - I'd like to return search results based on a date range that is
selected by the user :

<select name="date1yy">
<option value="1995-01-01" selected>1995</option>

<select name="date2yy">
<option value="2006-12-31" selected>2006</option>

My SQL is :

select *
from tablename
where title like ('%nith%')
and recall_date between
extract(year from date '1995-01-01')
and extract(year from date '2006-12-31')
order by recall_date

How can I add the MONTH to be included in the between statement ?
If I select 1995 - 2006 it currently only returns rows up to 2005-12-31

and to_char(recall_date, 'yyyy-mm') between
to_char('1995-01-01'::date, 'yyyy-mm')
and to_char('2006-12-31'::date, 'yyyy-mm')
order by recall_date;

**untested**

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

#3Noname
Matthias.Pitzl@izb.de
In reply to: A. Kretschmer (#2)
Re: Extract between year *and* month

Hi!

You could use date_trunc instead of extract to truncate the date down to the
month:

select date_trunc('month','2006-12-31'::timestamp);
date_trunc
---------------------
2006-12-01 00:00:00

Greetings,
Matthias

Show quoted text

-----Original Message-----
From: pgsql-general-owner@postgresql.org
[mailto:pgsql-general-owner@postgresql.org] On Behalf Of One
Sent: Thursday, November 16, 2006 10:03 PM
To: pgsql-general@postgresql.org
Subject: [GENERAL] Extract between year *and* month

Hi - I'd like to return search results based on a date range that is
selected by the user :

<select name="date1yy">
<option value="1995-01-01" selected>1995</option>

<select name="date2yy">
<option value="2006-12-31" selected>2006</option>

My SQL is :

select *
from tablename
where title like ('%nith%')
and recall_date between
extract(year from date '1995-01-01')
and extract(year from date '2006-12-31')
order by recall_date

How can I add the MONTH to be included in the between statement ?
If I select 1995 - 2006 it currently only returns rows up to
2005-12-31

THANKS!

---------------------------(end of
broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

#4Russell Smith
mr-russ@pws.com.au
In reply to: Syl (#1)
Re: Extract between year *and* month

One wrote:

Hi - I'd like to return search results based on a date range that is
selected by the user :

<select name="date1yy">
<option value="1995-01-01" selected>1995</option>

<select name="date2yy">
<option value="2006-12-31" selected>2006</option>

My SQL is :

select *
from tablename
where title like ('%nith%')
and recall_date between
extract(year from date '1995-01-01')
and extract(year from date '2006-12-31')
order by recall_date

How can I add the MONTH to be included in the between statement ?
If I select 1995 - 2006 it currently only returns rows up to 2005-12-31

THANKS!

Try

select *
from tablename
where title like ('%nith%')
and date_trunc('month',recall_date::timestamp) >= date_trunc('month','1995-01-01'::timestamp)
and date_trunc('month',recall_date::timestamp) <= date_trunc('month','2006-12-31'::timestamp)
order by recall_date

Show quoted text

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

#5Syl
david.hunter@gmail.com
In reply to: Russell Smith (#4)
Re: Extract between year *and* month

Russell Smith wrote:

One wrote:

Hi - I'd like to return search results based on a date range that is
selected by the user :

<select name="date1yy">
<option value="1995-01-01" selected>1995</option>

<select name="date2yy">
<option value="2006-12-31" selected>2006</option>

My SQL is :

select *
from tablename
where title like ('%nith%')
and recall_date between
extract(year from date '1995-01-01')
and extract(year from date '2006-12-31')
order by recall_date

How can I add the MONTH to be included in the between statement ?
If I select 1995 - 2006 it currently only returns rows up to 2005-12-31

THANKS!

Try

select *
from tablename
where title like ('%nith%')
and date_trunc('month',recall_date::timestamp) >= date_trunc('month','1995-01-01'::timestamp)
and date_trunc('month',recall_date::timestamp) <= date_trunc('month','2006-12-31'::timestamp)
order by recall_date

Fantastic.

Thank you to Matthias and Russell - everything is working perfectly!

#6Alban Hertroys
alban@magproductions.nl
In reply to: Syl (#5)
Re: Extract between year *and* month

Syl wrote:

Try

select *
from tablename
where title like ('%nith%')
and date_trunc('month',recall_date::timestamp) >= date_trunc('month','1995-01-01'::timestamp)
and date_trunc('month',recall_date::timestamp) <= date_trunc('month','2006-12-31'::timestamp)
order by recall_date

Actually, that looks a lot like BETWEEN, which is even shorter :)

select *
from tablename
where title like ('%nith%')
and date_trunc('month',recall_date::timestamp)
between date_trunc('month','1995-01-01'::timestamp)
and date_trunc('month','2006-12-31'::timestamp)
order by recall_date

Fantastic.

Thank you to Matthias and Russell - everything is working perfectly!

--
Alban Hertroys
alban@magproductions.nl

magproductions b.v.

T: ++31(0)534346874
F: ++31(0)534346876
M:
I: www.magproductions.nl
A: Postbus 416
7500 AK Enschede

// Integrate Your World //

#7Syl
david.hunter@gmail.com
In reply to: Alban Hertroys (#6)
Re: Extract between year *and* month

Alban Hertroys wrote:

Syl wrote:

Try

select *
from tablename
where title like ('%nith%')
and date_trunc('month',recall_date::timestamp) >= date_trunc('month','1995-01-01'::timestamp)
and date_trunc('month',recall_date::timestamp) <= date_trunc('month','2006-12-31'::timestamp)
order by recall_date

Actually, that looks a lot like BETWEEN, which is even shorter :)

select *
from tablename
where title like ('%nith%')
and date_trunc('month',recall_date::timestamp)
between date_trunc('month','1995-01-01'::timestamp)
and date_trunc('month','2006-12-31'::timestamp)
order by recall_date

Fantastic.

Thank you to Matthias and Russell - everything is working perfectly!

Thank you for the accurate and detailed repsonses! All is working
excellent.