Postgresql 统计当月数据-不是毕业后30天

Postgresql 统计当月数据-不是毕业后30天,postgresql,Postgresql,Ive此查询从当前日期返回30天的数据,需要修改它以仅返回当前月份的数据,而不是从当前日期返回30天的数据 从users.logged中选择count(1)作为计数器,其中createddate>= 日期(“月份”,当前日期) 关于如何调整此查询的任何提示,请参见基于Postgres的 关于它应该已经返回当月的值。截断将执行转换2013年11月10日14:16->2013年11月1日00:00,并将从本月初开始返回数据。这个问题似乎是另外一个问题。像这样的问题应该可以解决 SELECT coun

Ive此查询从当前日期返回30天的数据,需要修改它以仅返回当前月份的数据,而不是从当前日期返回30天的数据

从users.logged中选择count(1)作为计数器,其中createddate>= 日期(“月份”,当前日期)

关于如何调整此查询的任何提示,请参见基于Postgres的


关于

它应该已经返回当月的值。截断将执行转换
2013年11月10日14:16->2013年11月1日00:00
,并将从本月初开始返回数据。这个问题似乎是另外一个问题。

像这样的问题应该可以解决

SELECT count(1) AS counter
FROM users.logged
WHERE date_trunc('month', createddate) = date_trunc('month', current_date);
Ive此查询从当前日期返回30天的数据,需要修改它以仅返回当前月份的数据,而不是从当前日期返回30天的数据

那是不对的。您的查询:

SELECT count(1) AS counter FROM users.logged WHERE createddate >= date_trunc('month', CURRENT_DATE);
返回所有日期>=11月1日00:00:00,换言之,即您已经想要的日期。或者,你简化了你的查询,省略了更重要的部分——那些被破坏的部分。如果没有:

这可能是因为你在未来有约会,因此你得到的计数不正确。如果是,请在where条款中添加其他标准:

AND created_date < date_trunc('month', CURRENT_DATE) + interval '1 month'
和创建日期

也可能是您的示例数据有一个奇怪的带有时区的行,因此时间戳看起来像是从本月开始的,但日期/时间算术是在上个月到达的。

这将只为您提供当月的数据。我尝试提取
月份
年份
。最后一步是可以将创建的日期与当前日期时间进行比较

SELECT count(1) AS counter 
FROM users.logged 
WHERE 
    EXTRACT(MONTH FROM createddate) = EXTRACT(MONTH FROM current_date)
    AND EXTRACT(YEAR FROM createddate) = EXTRACT(YEAR FROM current_date);

如您所说,我已修改您的观点,结果:运算符不存在:时区时间戳==时区行时间戳1:…(1)作为snap.alert中的计数器,其中createddate==date\u tr…^提示:没有与给定名称和参数类型匹配的运算符。您可能需要添加显式类型转换。@很抱歉,我已经修复了它。它是单个的
=
。结果变为0,即strange@MarcoDonJuan你确定你有一行是这个月的createddate吗?我很肯定,我有一行是createddate,当我将=to=>its count 30 days back并返回值,但我将其设置为=its return 0时,您的查询当前将返回当前月份的计数。在1月31日23:59:59,它将为您提供从1月1日00:00:00到那时的所有已创建帐户。@Denis我希望在这里修改,以便为我提供当前月份的计数,就像从11月1日到今天的数据计数一样,这就是您当前查询的功能。当我写这篇文章时,
选择日期(“月”,当前日期)会在午夜生成11月1日,即您想要的。有效,但请注意,这将无法在createddate上使用索引(假设存在索引),或者实际上根本无法使用任何索引,因为
date\u trunc()
不是不可变的。