0
的Postgres 9.6时间戳
我有利用BETWEEN操作者选择其中一个被指定的日期范围内创建的记录的功能。这是我的结构和功能
表
CREATE TABLE test.dated_records (
dated_record_id int4 NOT NULL DEFAULT nextval('test.dated_record_dated_record_id_seq'::regclass),
create_date timestamptz NOT NULL DEFAULT now(),
update_date timestamptz NOT NULL DEFAULT now(),
CONSTRAINT dated_record_pkey PRIMARY KEY (dated_record_id),
)
WITH (
OIDS=FALSE
) ;
函数的例子
CREATE OR REPLACE FUNCTION test.list_date_records(_start_date timestamp with time zone, _end_date timestamp with time zone,)
RETURNS TABLE(dated_record_id integer, create_date timestamptz,update_date timestamptz)
LANGUAGE plpgsql
AS $function$
BEGIN
return QUERY EXECUTE
$q$
SELECT
dr.dated_record_id,
dr.create_date,
dr.update_date
FROM test.dated_records dr
WHERE dr.create_date BETWEEN $1 AND $2
ORDER BY dr.create_date DESC
$q$
using _start_date, _end_date;
return;
END
$function$
我有一个纪录的'2017-07-06 21:55:40.550468'
一个CREATE_DATE和日志记录我的参数
LOG: execute <unnamed>:
SELECT * FROM test.list_date_records($1, $2);
DETAIL: parameters: $1 = '2017-06-08 00:00:00', $2 = '2017-07-06 23:59:59'
但我没有得到任何回报。我试着改变一切,以简单的TIMESTAMP和铸造create_date到DATE,但似乎没有任何工作。
我确定它与我的时区有关(我是美国东部时间 - 纽约),但我无法弄清楚它对我的生活是什么。
我希望有人能指出我做错了什么。
在此先感谢。
请给予好评,并标记为答案这个答案可以帮助你。如果你不明白,我们可以在评论部分讨论更多。谢谢 :) –