当前位置: 首页 > 知识库问答 >
问题:

将时间戳与查询中的日期名称相等,并在PostgreSQL查询中获取结果集w.r.t day name

乐正远
2023-03-14

我想在PostgreSQL中将时间戳和日期名称等同起来,并且我想要关于日期名称的结果集。我也尝试使用子查询和一些函数,但出现语法错误和函数不存在SQL错误。请帮忙。

我试图使用to_char和to_timestamp函数,但当我将它们绑定到子查询时,我会遇到语法错误。首先,我写了这个从时间戳中提取日期的查询。

select to_char(TO_TIMESTAMP(1534994169000 / 1000), 'Day');

然后我尝试在代码中显示的子查询中使用此查询。

select * from tests where testtimestamp = (to_timestamp(TO_TIMESTAMP(1531803015000 / 1000), 'Day'));

select * from tests where testtimestamp = (select to_timestamp(to_char(TO_TIMESTAMP(1534994169000 / 1000), 'Day')))

我得到的错误是

SQL错误[42883]:错误:函数to_timestamp(带时区的时间戳,未知)不存在提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换
位置:44错误:函数to_timestamp(带时区的时间戳,未知)不存在提示:没有与给定名称和参数类型匹配的函数。您可能需要添加显式类型转换。位置:44错误:函数到时间戳(带时区的时间戳,未知)不存在提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。职位:44

共有2个答案

轩辕鸿
2023-03-14

您可以使用EXTRACT

WHERE extract( day from testtimestamp)
   = extract ( day from TO_TIMESTAMP(1534994169000 / 1000) )
督嘉言
2023-03-14

由于格式化会产生文本输出(即。星期三)还需要对表中的时间戳字段进行转换,以进行相等比较。我想是这样的。

select 
       * 
  from 
       tests 
 where 
       to_char(TO_TIMESTAMP(testtimestamp / 1000), 'Day') 
       = 
       to_char(TO_TIMESTAMP(1534994169000 / 1000), 'Day');

确保使用to_char和to_timestamp(在上面的第一个查询中,您to_timestamp了两次,这就是导致错误的原因)。如果您碰巧解决了这个问题,您可能需要查看函数索引来加快速度。

 类似资料:
  • 问题内容: 如何从PostgreSQL的时间戳获取最多只有几分钟而不是几秒钟的日期和时间。我需要日期和时间。 例如: 为此,我需要 从带有时区的时间戳字段中说出,如何使用PostgreSQL select查询获取日期和时间。 请帮我。 问题答案: postgresql有很多可用的日期时间函数: 在这里查看清单 http://www.postgresql.org/docs/9.1/static/fu

  • 问题内容: 我想将MySQL中的A 转换为日期。 我想将user.registration字段格式化为文本文件。 这是我的SQL: 我还尝试了日期转换: 我在写文本文件之前回显结果,然后得到: email1; name1; DATE_FORMAT(user.registration,’%d /%m /%Y’);新闻1 email2; name2; news2 如何将该字段转换为日期? 问题答案:

  • 我已经插入了一些测试记录到mongo数据库,结构如下。 {"_id": ObjectId("5563fe96a826638b48c77c26"), “日期”:ISODate(“2015-05-02T07:00:00.326Z”), “createdDate”:ISODate(“2015-05-26T05:03:18.899Z”), "UpdatedDate": ISODate("2015-05-2

  • 问题内容: 我在DB(Oracle)表之一中有一个timestamp列tradedate。我使用hibernate作为持久层来获取数据并将其存储到DB。我有一个需要查询日期的数据库的要求。即从用户界面传递一个日期,我需要根据该日期获取过滤后的数据。 如果tradedate列仅包含日期部分,我的查询将返回正确的记录。当在tradedate列中填充时间戳值即(日期+时间)时,就会出现此问题。然后,查询

  • 问题内容: 在MySQL客户端/控制台中输出查询结果之前,如何告诉MySQL将时间戳格式设置为可读日期? 问题答案: 像这样使用FROM_UNIXTIME:

  • 获取查询对象的结果集 // 查询邮箱或密码是否正确 async checkEmailAndPassword(loginData) { // 解构查询对象中的结果 const { dataValues: {id,username,password,email} } = await this.ctx.model.User.findOne({