当前位置: 首页 > 知识库问答 >
问题:

Postgresql中缺少月和日

终子昂
2023-03-14

我有日期值,很少日期是完整的(格式:yyyy-mm-dd,但作为文本,而不是日期格式),但很少日期有缺失的月和日值,现在我必须添加缺失的月和日。示例:如果缺少日,则必须将该月的第一天添加到日期中,如果缺少月和日,则必须将1月1日添加到年部分中,在sql中,我可以简单地将数字连接起来,如下所示:

CASE  WHEN LENGTH(<t>1.CMSTDT) = 4  THEN TO_DATE(<t>1.CMSTDT ||'-01-01','YYYY-MM-DD')  
WHEN LENgTH(<t>1.CMSTDT) = 7  THEN TO_DATE(<t>1.CMSTDT ||'-01','YYYY-MM-DD')  
ELSE TO_DATE(SUBSTR(<t>1.CMSTDTC\,1,10),'YYYY-MM-DD') END

现在类似的连接必须在POSTGRESQL中完成,我尝试使用CAST和to_char以及其他一些函数,但我无法连接值,有人能帮我吗?我对POSTGRESQL很陌生,我不知道在这种情况下使用哪个函数。

是的,1.CMSTDT是一个日期部分,用于SQL而不是POSTgresql,我的结果如下:

Actual Values   Results 
2014-06         2014-06-01
1998-08         1998-08-01
1986            1986-01-01

共有1个答案

戚成礼
2023-03-14

SQL小提琴演示

我创建了具有预期结果的表,以查看在< code>CASE之后是否匹配

SELECT 
       "Values",
       "Results",
       CASE WHEN char_length("Values") > 8 THEN TO_DATE("Values", 'YYYY-MM-DD')
            WHEN char_length("Values") > 5 THEN TO_DATE("Values" || '-01', 'YYYY-MM-DD')
            ELSE TO_DATE("Values" || '-01-01', 'YYYY-MM-DD')
       END as "Result1"
FROM Table1            

输出

|     Values |                   Results |                   Result1 |
|------------|---------------------------|---------------------------|
| 2014-06-01 |    June, 01 2014 00:00:00 |    June, 01 2014 00:00:00 |
|    1998-08 |  August, 01 1998 00:00:00 |  August, 01 1998 00:00:00 |
|       1986 | January, 01 1986 00:00:00 | January, 01 1986 00:00:00 |
 类似资料:
  • 问题内容: 我有此数据表,我想知道是否有可能创建一个查询,以考虑 到当前月份的所有月份 按月累积的总和。 我需要这样的结果: 问题答案: 这与其他问题非常相似,但是最佳查询仍然很棘手。 基本查询 以快速获取运行总和: 棘手的部分是 填写缺少的月份 : 该隐含需要的Postgres 9.3+。从表中的第一个月开始。 要 开始一个特定的月份 : SQL提琴。 将不同年份的月份间隔数月。您并没有要求,但

  • 问题内容: 天哪,它必须是如此简单,但我正在为“填写缺失的数据”问题而苦苦挣扎。 我有一个表,该表具有以下带有一些插入数据的列。 我想要的这张表是从2014年起的全部月份的付款值。 我尝试在select中使用IFNULL,但失败如此严重…而且stackoverflow的搜索结果通常会结合两个或多个表来处理信息。解决这个问题的最快,最好的解决方案是什么? 问题答案: 对于缺少的月份,您可以对所有月份

  • 问题内容: 我在Grails 2.0和Postgresql 9.1上遇到麻烦 我正在尝试使用顺序ID映射现有数据库。但是,即使没有在域中创建任何类,我也会遇到错误: 我的数据源是: Tee现有数据库是一个扑克软件数据库(Holdem经理)。我正在使用一个不使用序列的PlayerHand对象,但是Player对象具有一个序列表。 奇怪的是,在以前的程序中,我很容易使Player对象与Postgres

  • 例如,在包括Spring Cloud Sleuth之前,人们会在他们的日志中得到这样的东西 在应用程序名称附近有2个逗号(即traceID和spanID将显示的位置)。但我的日志最初看起来像这样 为了在日志中获取应用程序名称,我在application.properties中编写了以下代码 现在,我的日志看起来是这样的(如果您观察到,它在应用程序名称旁边没有2个逗号) 即使包括了Sleuth,我的

  • 问题内容: 为什么Java EE 6 CDI缺少@ViewScoped和@FlashScoped批注?(特别是前者让我感到奇怪,因为CDI来自Seam世界,而Seam世界已经知道非常相似的ScopeType.PAGE …) 使用CDI时,建议的解决方法是什么?使用Seam 3? 谢谢 问题答案: 在特定的MVC框架JSF,而不是依赖注入框架CDI。只要您与同一JSF视图进行交互,该视图范围就可以存

  • 问题内容: 我正在尝试为dellstore2数据库累计计算用户数。在这里和其他论坛上寻找答案时,我使用了这个 这返回 每个月是 看一下前几项,似乎总的来说还不错。但是当我跑步时 对于整个事情,我明白了 这与第一个输出11,681中的最后一项不一致。我猜上面的计算无法确定整个月的唯一性。什么是最快的计算方式(最好不使用自联接)? 问题答案: 除了直接从订单中选择之外,还可以使用如下子查询: 我认为这