对于许多喜欢利用数据库功能的开发人员来说,这可能听起来很疯狂,
但是经过详尽的思考、使用 php 比较日期函数为 mysql 和 postgrsql 创建和修复应用程序的问题后,我得出了结论(对我自己而言),最简单的方法,即最简单的 SQL 问题较少的方法不是利用其中任何一个。
为什么?因为如果您使用像 PHP 这样的中间件语言进行开发,PHP 具有所有这些功能,并且它们更容易在应用程序 ode 中作为比较整数来实现。 PostgreSQL 时间戳不是 == UNIX TIMESTAMP 并且 MySQL 的 UNIX TIMESTAMP 不是 PostgresQL 或 Oracles 时间戳。如果使用数据库时间戳,移植会变得更加困难。
所以只需使用整数,而不是时间戳,
作为自 1970 年 1 月 1 日午夜以来的秒数。并且不要介意数据库时间戳。
, 并使用 gmdate() 并将所有内容存储为 gmt 时间以避免时区问题。
如果您需要在您的应用程序中搜索、排序或比较其他数据中的日期、月份或年份或星期几或任何其他数据,
和用于 time_day、time_hour、time_seconds 的 INTEGER 数据类型.. 或任何您想要索引以进行搜索的数据类型将使数据库更流畅、更便携。
在大多数情况下,您可以只使用一个字段:INTEGER time_created NOT NULL
(您的数据库行中的更多字段是我发现的此解决方案的唯一缺点,并且不会引起那么多头痛或咖啡杯 :)
php 的日期函数非常适合比较日期,
但在 mysql 或 postgresql 中,比较日期?不.. 使用整数 sql 比较
我意识到在插入函数上使用 CURRENT_TIMESTAMP 似乎更容易。哈!
不要被愚弄了。
你不能这样做DELETE FROM SESSION_TABLE WHERE time-initialized < '2 days'
如果 time-initialized 是一个 postgresql 时间戳。
但你可以这样做:
DELETE FROM SESSION_TABLE WHERE time_initialized < '$yesterday'
只要您在 php 中将 $yesterday 设置为自 1970 年以来昨天的秒数。
这比在 postgresql 选择语句中比较时间戳更容易管理会话记录。
SELECT age()、SELECT extract() 和 asbtime 本身就是令人头疼的问题。这只是我的看法。
你可以用php日期对象做加法、减法、等操作
_peter_sysko
U4EA 网络公司