use*_*855 8 postgresql datetime
我有一个不包含日期或时间相关字段的表.我仍然想根据创建记录/行的时间来查询该表.有没有办法在PostgreSQL中执行此操作?
我更喜欢直接在PostgreSQL中做这个问题的答案.但是,如果这不可能,那么hibernate可以为PostgreSQL做吗?
基本上:不。PostgreSQL中没有针对行的自动时间戳。
我通常在表中添加这样的列(忽略时区):
ALTER TABLE tbl ADD COLUMN log_in timestamp DEFAULT localtimestamp NOT NULL;
Run Code Online (Sandbox Code Playgroud)
只要您不操作该列中的值,就可以获得创建时间戳。您可以添加触发器和/或限制写权限,以避免调整值。
如果您有一个串行列,则至少可以以一定的概率确定输入行的顺序。这不是100%可靠的,因为可以手动更改值,并且应用程序可以按顺序和INSERT无序获取值。
如果您创建了table WITH (OIDS=TRUE),那么OID列可能会有所指示-除非您的数据库写得太多和/或非常旧,否则您可能已经经历了OID环绕,而后面的行可能具有较小的OID。这就是为什么不再使用此功能的原因之一。
默认值取决于default_with_oids我引用手册的设置:
该参数默认为关闭;在PostgreSQL 8.0及更早版本中,默认情况下处于启用状态。
VACUUM FULL或CLUSTER或..,则平原SELECT * FROM tbl将按输入顺序返回所有行。但这是非常不可靠的并且依赖于实现。PostgreSQL(像任何RDBMS一样)不保证没有ORDER BY子句的任何顺序。| 归档时间: |
|
| 查看次数: |
4542 次 |
| 最近记录: |