如何在postgres中获取该月的最后一天?

2024-01-11

如何在postgres中找到该月的最后一天? 我有一个日期列,存储为数字(18),格式为(YYYYMMDD) 我正在尝试使用它来使其约会

to_date("act_dt",'YYYYMMDD') AS "act date"

然后找到该日期的最后一天: 像这样:

(select (date_trunc('MONTH',to_date("act_dt",'YYYYMMDD')) + INTERVAL '1 MONTH - 1 day')::date)

但它给了我这个错误:

ERROR: Interval values with month or year parts are not supported
  Detail: 
  -----------------------------------------------
  error:  Interval values with month or year parts are not supported
  code:      8001
  context:   interval months: "1"
  query:     673376
  location:  cg_constmanager.cpp:145
  process:   padbmaster [pid=20937]
  -----------------------------------------------

有什么帮助吗?

Postgres 版本:

PostgreSQL 8.0.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3), Redshift 1.0.874


对于任何提出这个问题寻找Postgres方法(不使用 Redshift),具体方法如下:

SELECT (date_trunc('month', '2017-01-05'::date) + interval '1 month' - interval '1 day')::date
AS end_of_month;

更换'2017-01-05'无论您想使用什么日期。您可以将其变成这样的函数:

create function end_of_month(date)
returns date as
$$
select (date_trunc('month', $1) + interval '1 month' - interval '1 day')::date;
$$ language 'sql'
immutable strict;

编辑 Postgres 11+

从评论中删除此内容@Gabriel https://stackoverflow.com/questions/28186014/how-to-get-the-last-day-of-month-in-postgres/45740174#comment115114539_45740174,您现在可以将区间表达式合并为一个interval(这使得事情变得更短):

select (date_trunc('month', now()) + interval '1 month - 1 day')::date as end_of_month;

-- +--------------+
-- | end_of_month |
-- +--------------+
-- | 2021-11-30   |
-- +--------------+
-- (1 row)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在postgres中获取该月的最后一天? 的相关文章

随机推荐

  • asp.net mvc参数从页面到局部视图

    我遇到了一个问题 我有一个传递参数的 ajax 链接 但是它打开的页面不需要该参数 该页面仅加载 2 个部分视图 其中一个需要将该参数传递给页面才能正确加载数据 另一个只需要加载表单 因此不需要该参数 我怎样才能做到这一点 为了执行您想要的
  • 使用 Spring MVC 处理 MaxUploadSizeExceededException

    当文件大小超出时 如何拦截并发送文件上传的自定义错误消息 我在控制器类中有一个带注释的异常处理程序 但请求未到达控制器 我在此链接中找到的答案如何处理MaxUploadSizeExceededException https stackove
  • 为什么需要softmax函数?为什么不进行简单的标准化呢?

    我对深度学习不熟悉 所以这可能是一个初学者问题 根据我的理解 多层感知器中的softmax函数负责标准化和分配每个类别的概率 如果是这样 我们为什么不使用简单的标准化呢 假设我们得到一个向量x 10 3 2 1 应用softmax 输出将是
  • Request.IsAjaxRequest 在 POST 上返回 false

    我的问题类似于this one https stackoverflow com questions 1702837 request isajaxrequest returns false我遇到了类似的问题 但一个很大的区别是我使用的是 Aj
  • 如何在Python中控制string.format(bool_value)结果的长度?

    等效的方法是什么str format将布尔值转换为字符串的函数 gt gt gt 5s True True gt gt gt 5s False False 请注意其中的空格 True 这始终使 True 和 False 的长度相同 我已经检
  • 我应该在哪里存储登录数据?

    我正在创建一个小应用程序 让用户输入他的 Google 帐户名称和密码 并向他显示他的 Google 云端硬盘帐户上的可用电子表格 我想让用户能够保存以下数据 正确或错误 是否自动连接到他的帐户 Google 帐户名 电子邮件 Passwo
  • DictReader,无引号,选项卡式文件

    我有一个 csv 文件 如下所示 请注意 没有引号 制表符 t 是分隔符 标题和实际内容之间有一个空行 Facility No Testing No Name Age 252 2351 Jackrabbit Jazz 15 345 257
  • 与 Google 日历 API v3 进行未经授权的交互

    我的情况与this guy https stackoverflow com questions 10112939 login required 401 unauthorized message when calling the v3 goo
  • 获取 Firestore 子集合

    我在从以下位置获取数据时遇到问题火库具有以下结构 这是我获取类别集合的方法 var defaultStore Firestore var location DocumentSnapshot override func viewDidLoad
  • 空手道 - 有没有一种方法可以在字符串正则表达式中使用变量

    空手道 有没有一种方法可以在字符串正则表达式中使用变量 类似于下面的东西 match each productCodes regex i codes 任何替代方案或最佳实践将不胜感激 我试图从响应中获取一个字符串数组 以便每次进行匹配 一次
  • 在“VI”编辑器中对行进行排序

    如果我必须根据 左侧的值对以下行进行排序 但排序应同时将选择范围扩展到 之后的列 这就是我们不必在 之后对列进行排序 50599 1000000 50454 00000054 50080 00005464 50098 00000875 50
  • Ruby on Rails:根据数据库排序规则比较两个字符串

    我有一个单词列表 想查找数据库中已经存在的单词 我决定使用 SELECTword FROM table WHERE wordIN array of words 然后循环结果 问题是数据库排序规则 http www collat ion ch
  • f32 未实现减法?

    编译以下代码时 use std io fn main let reader stdin let nums reader lock lines next unwrap unwrap split whitespace map s s parse
  • CouchDB 全文搜索

    我需要一些有关 couchdb 中全文搜索的指导 它是否已经在 2 0 中默认启用 或者我们是否必须重建 couchdb 才能启用它 设想 它是一个文档管理系统 文档以网格形式显示 我需要能够对结果进行排序 经过从地图减少到弹性索引的几次更
  • Django 中没有 TEMPLATE_CONTEXT_PROCESSORS

    我没有TEMPLATE CONTEXT PROCESSORS在我的默认设置中 TEMPLATE CONTEXT PROCESSORS django contrib auth context processors auth django co
  • “不知道该怎么办”nvcc 致命错误

    我在 Ubuntu 终端中使用命令行 我正在尝试编译 CUDA Compiler Driver NVCC pdf 中提供的三个文件 当我使用这 3 个文件的文档给出的命令行时 我确实收到以下错误 nvcc fatal 不知道如何处理 dc
  • 如何知道站点查询字符串的所有可能参数是什么?

    我想检查任何现有网站网址的所有可能参数是什么 假设该站点正在使用参数类型查询字符串 architecture 例如不是 MVC 如下所示 http www foobar com p1 itemsPerPage 50 size 500 假设还
  • 实模式 BIOS 例程和保护模式

    我正在做一些操作系统实验 到目前为止 我的所有代码都利用实模式 BIOS 中断来操作硬盘和软盘 但是一旦我的代码启用了CPU的保护模式 所有实模式BIOS中断服务程序将不可用 如何读写硬盘和软盘 我现在需要做一些硬件驱动程序吗 我该如何开始
  • 按重叠范围对行进行分组

    我有一个数据框 其中left列是对象最左边的位置 并且right列是最右边的位置 如果对象重叠 或者它们重叠重叠的对象 递归地 我需要对它们进行分组 因此 例如 如果这是我的数据框 left right 0 0 4 1 5 8 2 10 1
  • 如何在postgres中获取该月的最后一天?

    如何在postgres中找到该月的最后一天 我有一个日期列 存储为数字 18 格式为 YYYYMMDD 我正在尝试使用它来使其约会 to date act dt YYYYMMDD AS act date 然后找到该日期的最后一天 像这样 s