获取前1个月或PostgreSQL中2个月的所有日期

问题描述 投票:1回答:3

我正在尝试从数据库表(adempiere)字段“ dateinvoice”中提取前1或2个月的所有日期。

例如,如果当前是2012年1月6日

[我想提取2011年12月1日至2011年12月31日(之前1个月)或2011年11月1日至2011年12月31日(之前2个月)的所有数据

我已经看到了使用DateAdd的一些答案,最近我了解到,由于我正在使用PostgreSQL,因此DateAdd函数不起作用。

我正在使用PostgreSQL 9.1。

UPDATE

我已经按照Craigs的建议使用SQLFiddle,这是我第一次使用它,所以请问如果我做任何booboo,请原谅。

链接在这里http://sqlfiddle.com/#!1/1d5d4/1http://sqlfiddle.com/#!1/1d5d4/3

即使将月份更改为几个月后,我仍然出现错误...

更新编号2

我使用Visual Studio搜索所有这些查询。克雷格斯的建议确实有效。我在查询设计器中即时通讯时出现错误,但在“文本编辑”时却一直报错。似乎没有问题。

我不确定是否由于查询设计器而出现此错误。但是Craig的查询确实可以工作。.我认为不适用于文本而不是Visual Studio为此问题提供的GUI。谢谢!

[我正在尝试从数据库表(adempiere)字段“ dateinvoice”中提取前1或2个月的所有日期,例如,如果当前是2012年1月6日,我想提取所有数据...

postgresql reporting-services postgresql-9.1
3个回答
4
投票

您可能想要类似的东西:

SELECT *
FROM the_table
WHERE date_column BETWEEN '2013-01-01' AND '2013-01-01' + INTERVAL '1' MONTH;

0
投票

尝试一下:


0
投票
CREATE FUNCTION [dbo].[GetDates](@StartDate DATETIME, @EndDate DATETIME)
RETURNS TABLE AS
RETURN (
WITH 
 N0 AS (SELECT 1 AS N UNION ALL SELECT 1)
,N1 AS (SELECT 1 AS N FROM N0 T1, N0 T2)
,N2 AS (SELECT 1 AS N FROM N1 T1, N1 T2)
,N3 AS (SELECT 1 AS N FROM N2 T1, N2 T2)
,N4 AS (SELECT 1 AS N FROM N3 T1, N3 T2)
,N5 AS (SELECT 1 AS N FROM N4 T1, N4 T2)
,N6 AS (SELECT 1 AS N FROM N5 T1, N5 T2)
,NUMS AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS NUM FROM N6)
SELECT CAST(DATEADD(day,num-1,@StartDate) AS Date) as TheDate
FROM NUMS 
WHERE NUM <= DATEDIFF(day,@StartDate,@EndDate) + 1
);
© www.soinside.com 2019 - 2024. All rights reserved.