xRo*_*bot 67 sql postgresql datetime
在mysql中我能够这样做:
SELECT *
FROM table
WHERE auth_user.lastactivity > NOW() - 100
Run Code Online (Sandbox Code Playgroud)
现在在postgresql我正在使用此查询:
SELECT *
FROM table
WHERE auth_user.lastactivity > CURRENT_TIMESTAMP - 100
Run Code Online (Sandbox Code Playgroud)
但我得到这个错误:
operator does not exist: timestamp with time zone - integer
Run Code Online (Sandbox Code Playgroud)
我怎么解决?
Mar*_*ers 122
使用间隔而不是整数:
SELECT *
FROM table
WHERE auth_user.lastactivity > CURRENT_TIMESTAMP - INTERVAL '100 days'
Run Code Online (Sandbox Code Playgroud)
Sco*_*ley 31
你也可以now()在Postgres中使用.问题是你不能从timestamp或添加/减去整数timestamptz.你可以像Mark Byers建议的那样做并减去一个间隔,或者使用date允许你加/减整数的类型
SELECT now()::date + 100 AS date1, current_date - 100 AS date2
Run Code Online (Sandbox Code Playgroud)
小智 6
这是一个例子......
select * from tablename where to_char(added_time, 'YYYY-MM-DD') = to_char( now(), 'YYYY-MM-DD' )
Run Code Online (Sandbox Code Playgroud)
added_time 是一个列名,我将其转换为 char 以进行匹配
这是MySQL文档所说的NOW():
以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS.uuuuuu格式返回当前日期和时间作为值,具体取决于该函数是在字符串上下文中还是在数字上下文中使用。该值以当前时区表示。
mysql> SELECT NOW();
-> '2007-12-15 23:50:26'
mysql> SELECT NOW() + 0;
-> 20071215235026.000000
Run Code Online (Sandbox Code Playgroud)
现在,您当然可以将智能约会减少到更少...
SELECT (
date_part('year', NOW())::text
|| date_part('month', NOW())::text
|| date_part('day', NOW())::text
|| date_part('hour', NOW())::text
|| date_part('minute', NOW())::text
|| date_part('second', NOW())::text
)::float8 + foo;
Run Code Online (Sandbox Code Playgroud)
但是,那将是一个非常糟糕的主意,您需要了解的是时间和日期不是愚蠢的无格式数字,它们是属于自己的类型,具有自己的一组函数和运算符
因此,MySQL时间实质上使您可以将其NOW()视为哑巴类型,或者它被覆盖+以做出我在MySQL文档中找不到的假设。无论哪种方式,您都可能希望查看pg 中的date和interval类型。
| 归档时间: |
|
| 查看次数: |
180058 次 |
| 最近记录: |