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!
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_dateHow 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
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* monthHi - 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_dateHow 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-31THANKS!
---------------------------(end of
broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings
Import Notes
Resolved by subject fallback
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_dateHow 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-31THANKS!
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
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_dateHow 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-31THANKS!
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!
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 //
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_dateActually, 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_dateFantastic.
Thank you to Matthias and Russell - everything is working perfectly!
Thank you for the accurate and detailed repsonses! All is working
excellent.