Sha*_*ron 20 postgresql datetime
我正在使用SQL transact命令将Unix脚本转换为PostgreSQL命令.
我有一个包含字段last_update_time(xtime)的记录的表,我想选择表中已在选定时间段内更新的每个记录.
比如,当前时间05/01/2012 10:00:00和所选时间是04/01/2012 23:55:00.如何从表中选择在这些日期之间更新的所有记录.在发出psql命令之前,我已在Unix脚本中将2次转换为秒,并计算了2个时间段之间的间隔(以秒为单位).
我觉得有点像
SELECT A,B,C FROM table
WHERE xtime BETWEEN now() - interval '$selectedtimeParm(in secs)' AND now();
Run Code Online (Sandbox Code Playgroud)
我无法评价Parm的selectedtimeParm-它不妥善解决.
编者按:我没有改变不正确的使用条款period,time frame,time并date为DateTime类型timestamp,因为我讨论,在我的答案.
Erw*_*ter 40
有什么不对:
SELECT a,b,c
FROM table
WHERE xtime BETWEEN '2012-04-01 23:55:00'::timestamp
AND now()::timestamp;
Run Code Online (Sandbox Code Playgroud)
如果您希望以秒数运行interval:
...
WHERE xtime BETWEEN now()::timestamp - (interval '1s') * $selectedtimeParm
AND now()::timestamp;
Run Code Online (Sandbox Code Playgroud)
注意,我如何使用标准的ISO 8601日期格式YYYY-MM-DD h24:mi:ss,它与任何语言环境或DateStyle设置都是明确的.
另请注意,BETWEEN构造的第一个值必须是较小的值.如果您不知道哪个值较小,请BETWEEN改用.
在您的问题中,您将日期时间类型BETWEEN SYMMETRIC称为"日期","时间"和"期间".在标题中,您使用术语"时间帧",我将其更改为"时间戳".所有这些术语都是错误的.自由地交换它们使得这个问题更难理解.
那个,以及你只标记问题的事实timestamp(问题几乎不涉及命令行终端)可能有助于解释为什么没有人回答好几天.通常情况下,这里只需几分钟.我很难理解你的问题,必须阅读几次.
你需要了解的数据类型psql,date,interval和time-有或没有时区.首先阅读手册中的"日期/时间类型"一章.
错误信息也会走很长的路.
| 归档时间: |
|
| 查看次数: |
55804 次 |
| 最近记录: |