sql - 如何用静态数字替换postgres中的日期

标签 sql postgresql postgresql-9.5

我正在编写一个 Postgres 程序,我只想用一些静态编号替换日期的日期部分。

例如:-

varDate Date default '2018-05-21';

假设我想将此日期设置为“2018-05-08”;

任何人都可以告诉如何实现这一目标。

到目前为止我尝试的是这个

varDate := varDate - interval '1 day' * 21 + interval '1 day' * 8;

上面的表达式给了我正确的结果。但是是否有任何快捷方式可以仅更改日期的日期部分。

最佳答案

据我了解,您想将一个月中的第几天更改为 8。

执行此操作的一种方法是将日期“截断”为月初,然后添加 8 天:

vardate := date_trunc('month', vardate)::date + 8;

date_trunc 返回一个 timestamp,这就是为什么需要转换 ::date 的原因。

另一种选择是根据现有日期“构建”一个日期:

vardate := make_date(extract(year from vardate)::int, extract(month from vardate)::int, 8);

关于sql - 如何用静态数字替换postgres中的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52364961/

相关文章:

arrays - 将 JSONB_ARRAY_ELEMENTS 结果分配给 VARCHAR 数组

java - 如何使用 sqlbuilder 构建 SELECT 查询?

php - 如何编辑此 mySQL 查询以找到访问特定页面超过 x 次的人?

mysql - 选择没有至少一个关联的值

sql - 如何在 PostgreSQL 查询中声明变量

sql - 在 PostgreSQL 中选择临时表?

mysql - 嵌套记录的 SQL 查询

postgresql - 为什么 auto_explain 只在第一次调用 PL/pgSQL 函数时记录嵌套语句?

postgresql - 将 JSONB_ARRAY_ELEMENTS 与 WHERE ... IN 条件一起使用

sql - 查找 PostgreSQL 数据库中表、过程、函数使用的特定列的所有出现情况