2011-06-01 50 views
1

我有一個變量,它的格式是2011-05-13。 我想做一個查詢,將一天添加到這個變量,並在數據庫中搜索這樣的日子。Postgresql - 查詢問題

我做了這個查詢,但它不起作用。

select phone from employee where date like (select date '2011-05-13' + 1) % 

任何人都可以幫忙嗎?

+0

什麼類型是' 「日期」'場?這是什麼意思查詢「不起作用?」它是否因*語法錯誤*而失敗,因爲你打算引用並連接那個'%'?它是否因*運算符失敗而不存在錯誤*因爲沒有接受時間戳字段和字符串的重載LIKE運算符,並且上面的查詢不正是您正在執行的內容? – pilcrow 2011-06-02 03:20:22

回答

5

您需要的時間間隔:

SELECT phone FROM employee WHERE datefield = (date '2011-05-13' + INTERVAL '1 DAY') ; 

編輯:不要當你使用日期等中使用,也沒有像一個日期。

+0

我的日期排是這樣的2011-05-13 22:13:09.969所以我需要%符號來匹配2011-05-13。我不知道如何做到這一點。 添加1日到2011-05-13爲我工作與此查詢選擇日期'2011-05-13'+ 1. – tipotas 2011-06-01 20:40:12

+0

@tipotas:使用「之間日期'2011-05-13'和'2011- '05-14'將獲得5-13的所有值,因爲它會將它們視爲午夜至午夜。 – invertedSpear 2011-06-01 20:48:08

+1

只需將您的TIMESTAMP轉換爲DATE:CAST(字段爲AS DATE)='2011-05-13' – 2011-06-01 20:54:43

0

嘗試以下操作:

SELECT phone FROM employee WHERE to_char(date, 'yyyy-mm-dd')::timestamp = ('2011-05-13'::timestamp + '1 day'::interval) 
+0

YOu也可以使用date_trunc('day',date)而不是to_char()。 – 2011-06-01 20:47:25

+2

只需將它CAST到一個日期,你很好。您不需要字符串函數to_char()來提取日期部分。 – 2011-06-01 20:56:03

+1

以這種方式使用to_char()可能使得不可能使用索引。 – 2011-06-01 21:09:23