【问题标题】:Date in MySQL Laravel ORMMySQL Laravel ORM 中的日期
【发布时间】:2015-06-20 14:11:47
【问题描述】:

我将日期存储在 timestamp 类型中(我在 PHPMyAdmin 中看到了简单的 2015-04-14 00:00:00)。傻吗?更好的方式设置为int类型并节省UNIX时间?

如何查询

select * from `values` where `time` < $mytimeinunix

因为Model::all()-&gt;where('time','&lt;',$mytimeinunix) 不起作用。

问候

【问题讨论】:

  • 第一个问题:为什么要将它们存储在TIMESTAMP 类型中?这是 MySQL 1.0 的古老遗物。为什么不DATETIME
  • 我的基地不好。如果DATETIME 更好,我会使用它:)
  • @tadman 什么? TIMESTAMP 字段不是古代遗物。它们在处理时区时非常方便。
  • 来自the documentation:“MySQL 将 TIMESTAMP 值从当前时区转换为 UTC 进行存储,并从 UTC 转换回当前时区进行检索。”这只是一种方便的方法,并且时区处理应该在应用程序中完成,因为它可以是特定于客户端的。另外,它们是有界的,它们只能工作到 2038 年,使它们成为定时炸弹。为什么你会自愿使用它们?通常最好使用标准的DATETIMEDATE,除非您有非常具体的原因。
  • @tadman 它们适用于各种用例。例如,Laravel 将它们用于 created_at/updated_at/deleted_at 列。

标签: php mysql laravel timestamp laravel-5


【解决方案1】:

你正在寻找UNIX_TIMESTAMP:

Model::where(DB::raw('UNIX_TIMESTAMP(time)'), '<', $mytimeinunix)->get();

【讨论】:

  • 这不会很好,因为它不能被索引。
  • 我不能用内置 ORM 做到这一点?抱歉我的愚蠢问题,但我现在学习 Laravel:
  • Limonte 谢谢它工作正常,谢谢兄弟 :) 我很快就会接受答案 :)
猜你喜欢
  • 2013-02-09
  • 2014-09-26
  • 2021-03-16
  • 1970-01-01
  • 1970-01-01
  • 2015-06-21
  • 2015-09-29
  • 1970-01-01
  • 2017-05-15
相关资源
最近更新 更多