【问题标题】:Laravel, query where created_at formatLaravel,查询 where created_at 格式
【发布时间】:2019-09-30 19:26:37
【问题描述】:

在 PostgreSQL 和 Laravel 5.1 中

我有来自查询生成器的输出查询(原始):

select  *
from mytable
// some joins and stuff
where to_char(mytable.created_at, 'DD-MM-YYYY') = '20-06-2019'

我得到 0 个值,因为最后一行 where to_char(mytable.created_at, 'DD-MM-YYYY') = '2019-06-20' 是错误的。

created_at 的格式为:'2019-06-20 21:00:12'

如何查询我的表中的那个时间“20-06-2019”?

【问题讨论】:

  • Laravel 标签没问题,这意味着可以在答案中使用一些 Laravel 助手、Carbon 等。该 SQL 是查询构建器的原始输出。
  • 如果您想要 Laravel 解决方案,请发布 Laravel PHP 查询构建器代码,如果您发布原始 sql 语句作为问题,您将得到原始 sql 语句作为答案
  • 它是一个selectRaw,里面有所有的sql
  • 是的,但是 Laravel 有什么关系?你会因为你的网站是由 nginx 提供服务而标记 Laravel 的 nginx 配置问题吗?
  • 因为几乎每个 Laravel 开发人员通常都会遇到在 created_at 格式日期、时间戳等之间转换的问题。

标签: sql postgresql timestamp


【解决方案1】:

您可以将您的 char 日期转换为 DATE 并截断您从表中获取的日期,可以使用下面的查询

 select  *
 from mytable
 // some joins and stuff
 where trunc(mytable.created_at) = to_date('20-06-2019','dd-mm-yyyy')

【讨论】:

  • SQL 错误 [42883]: 错误: 函数 trunc(timestamp without time zone) 不存在
  • 尝试使用date_trunc而不是trunc
  • SQL 错误 [42883]: 错误: 函数 date_trunc(timestamp without time zone) 不存在 提示: 没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
  • 您使用的是哪个数据库?是 SQL Server 还是 Oracle 或其他?
  • OP 使用 postgres
猜你喜欢
  • 1970-01-01
  • 2019-01-17
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
  • 2021-09-18
  • 2021-09-18
相关资源
最近更新 更多