PostgreSQL获取24小时后创建的结果

PostgreSQL获取24小时后创建的结果,postgresql,timestamp,Postgresql,Timestamp,我有两张桌子要合在一起。我想根据它是否在24小时前创建来过滤结果。这是我的桌子 table user_infos ( id integer, date_created timestamp with timezone, name varchar(40) ); table user_data ( id integer, team_name varchar(40) ); 这是我的查询,我正在使用它将它们连接在一起,并希望过滤它们: SELECT timestampdiff(HO

我有两张桌子要合在一起。我想根据它是否在24小时前创建来过滤结果。这是我的桌子

table user_infos (
  id integer,
  date_created timestamp with timezone,
  name varchar(40)
);

table user_data (
  id integer,
  team_name varchar(40)
);
这是我的查询,我正在使用它将它们连接在一起,并希望过滤它们:

SELECT timestampdiff(HOUR, user_infos.date_created, now()) as hours_since,
       user_data.id, user_data.team_name,
       user_infos.name, user_infos.date_created
       FROM user_data
           JOIN user_infos      
               ON user_infos.id=user_data.id  
       WHERE timestampdiff(HOUR, user_infos.date_created, now()) < 24 
       ORDER BY name ASC, id ASC  
       LIMIT 50 OFFSET 0

我认为您的问题在于数据类型。您正在检查时间戳字段是否介于铸造日期字段(从日期中删除时间)之间
NOW()
与日期(NOW())不同

所以你有两个选择。您可以删除
DATE()

SELECT
    user_data.id, user_data.team_name,
    user_infos.name, user_infos.date_created
FROM user_data
    JOIN user_infos 
        ON user_infos.id=user_data.id  
WHERE user_infos.date_created
      BETWEEN DATE_SUB( NOW() , INTERVAL 1 DAY ) AND 
       NOW()  
ORDER BY name ASC, id ASC 
LIMIT 50 OFFSET 0

谢谢您的建议,但仍然不起作用。我按照您的建议删除了“DATE”函数,但出现了相同的错误。(我很抱歉将错误消息写在一行上,新行字符由于某种原因没有出现)
error making query{[error:syntax error at或near“1”]名称:'error',长度:84,严重性:'error',代码:'42601',详细信息:未定义,提示:未定义,位置:'261',内部位置:未定义,内部查询:未定义,其中:未定义,文件:'scan.l',行:'1053',例程:'scanner_yyerror'}
@Calimari328——请在我提供的小提琴中重现错误并分享。好的。这很尴尬。我被告知我使用的数据库是MYSQL,但实际上,它是POSTGRESQL。(难怪什么都没用,我用错了语言)。顺便说一句,SQL fiddle网站太棒了!再次感谢你的提示。我相信我知道接下来该怎么办。感谢you@Calimari328——:D别担心。这应该会有帮助:——而且你必须喜欢小提琴!
SELECT
    user_data.id, user_data.team_name,
    user_infos.name, user_infos.date_created
FROM user_data
    JOIN user_infos 
        ON user_infos.id=user_data.id  
WHERE user_infos.date_created
      BETWEEN DATE_SUB( NOW() , INTERVAL 1 DAY ) AND 
       NOW()  
ORDER BY name ASC, id ASC 
LIMIT 50 OFFSET 0