在postgres中标准化日期-迄今为止的字符

玛尼深

我有一个用coloumnname命名的表 description

description  //character varying
LZ000834_28-02-14
LZ000834_28-02-14
LA20683_30-04-15
LA20683_30-04-15
LA20300_31-01-15
LA20300_31-01-2015
LA20264_31-01-15
LA20264_31-01-2016
LAN2078_31-03-16
LAN2078_31-03-15
LAN8394_31-04-14
L2Z82736_31_03_2015  //has 1million rows

这里的描述是指batchname_expirydate

我的问题是如何规范化我的描述列将所有这些日期转换为DD-MM-YY格式

我已经尝试过这两个查询

select substring(description from position('_' in description) +1) from attributesetinstance;

上面的查询将给我所有的字符串,然后我尝试这样的日期转换

select to_date(substring(description from position('_' in description) +1), 'DD-MM-YY') from attributesetinstance;

现在这给我错误

ERROR:  invalid value "_3" for "DD"
DETAIL:  Value must be an integer.


********** Error **********

ERROR: invalid value "_3" for "DD"
SQL state: 22007
Detail: Value must be an integer.

如何更新/更正我的所有数据库?

更新:

尝试与另一个SQL

with product_dates AS (
select description, ((val[2])||'-'||val[3]||'-'||val[4])::date as expir_date
from ( 
    select description,regexp_matches(description, '([a-zA-Z0-9]+)_([0-9]+)[-_]([0-9]+)[-_]([0-9]+)') as val 
    from attributesetinstance
) a
), expiring_dates AS (
select description from product_dates
)
select description from expiring_dates

我得到以下错误:

ERROR:  date/time field value out of range: "31-04-14"


********** Error **********

ERROR: date/time field value out of range: "31-04-14"
SQL state: 22008

更新

我的postgres日期样式

show datestyle;
"ISO, DMY"
帕维尔·斯图尔(Pavel Stehule)

此错误消息不太好-该日期2014-04-31无效。因此,您无法使用您使用的算法将该字符串强制转换为最新的日期。但是to_date函数是容错的

postgres=# select '2014-04-31'::date;
ERROR:  date/time field value out of range: "2014-04-31"
LINE 1: select '2014-04-31'::date;
               ^
Time: 0.551 ms
postgres=# select to_date('2014-04-31','YYYY-MM-DD');
  to_date   
────────────
 2014-05-01
(1 row)

此代码有效

 postgres=# select to_date(replace(substring('LA20683_30_04_15' from '\d+[-_]\d+[-_]\d+$'),'_','-'), 'DD-MM-YY');
  to_date   
────────────
 2015-04-30
(1 row)

Time: 57.840 ms
postgres=# select to_date(replace(substring('LA20683_30_04_2015' from '\d+[-_]\d+[-_]\d+$'),'_','-'), 'DD-MM-YY');
  to_date   
────────────
 2015-04-30
(1 row)

8.4的解决方法:

CREATE OR REPLACE FUNCTION to_date_DD_MM_YY_2_4(text)
RETURNS date AS $$
SELECT CASE WHEN $1 ~ e'\\d+-\\d+-\\d{2}$' THEN to_date($1, 'DD-MM-YY') 
                                           ELSE to_date($1, 'DD-MM-YYYY')
       END$$ 
LANGUAGE sql;
CREATE FUNCTION
Time: 25.229 ms

postgres=# SELECT to_date_DD_MM_YY_2_4('30-04-2015');
 to_date_dd_mm_yy_2_4 
----------------------
 2015-04-30
(1 row)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在postgres中标准化日期-迄今为止的字符

来自分类Dev

迄今为止的Postgres时间戳

来自分类Dev

Oracle String迄今为止的日期,最近7天回来

来自分类Dev

迄今为止的字符串问题

来自分类Dev

迄今为止的 Python 字符串

来自分类Dev

VBA - 树可视化。可能是迄今为止最难的代码

来自分类Dev

迄今为止的总和

来自分类Dev

迄今为止的数字

来自分类Dev

迄今为止的字符串-在C#中[“ 2014年1月13日星期一00:00:00 GMT + 0000(GMT标准时间)”]

来自分类Dev

以整数形式返回自截止日期以来的工作日数,并使用 dplyr 添加迄今为止的工作日数

来自分类Dev

迄今为止的Python数字字符串

来自分类Dev

迄今为止的PHP UTC字符串

来自分类Dev

迄今为止的Java字符串错误

来自分类Dev

迄今为止给出的字符串格式

来自分类Dev

迄今为止的字符串数组,Jsp-Servlet

来自分类Dev

普及视图中的迄今为止的字符串

来自分类Dev

通过迄今为止观察到的最大值对熊猫数据框列进行归一化

来自分类Dev

迄今为止的弦乐弦

来自分类Dev

迄今为止的动态天数

来自分类Dev

如何在Lucene中标准化未知字符?

来自分类常见问题

如何在R中标准化字符串

来自分类Dev

如何在R中标准化字符串

来自分类Dev

如何在Lucene中标准化未知字符?

来自分类Dev

Javascript NoGray日历添加迄今为止的天数,如果选定的日期被阻止,请在选定的阻止日期之后检查可用性

来自分类Dev

连接表,基于 DATE 的总订单价格并获得 2 个不同日期记录的单独总和,而不是 1 个,这不是迄今为止唯一的

来自分类Dev

Expression Builder:迄今为止的时间戳

来自分类Dev

迄今为止的Javascript时间戳

来自分类Dev

迄今为止需要写笔记

来自分类Dev

添加迄今为止的工作日

Related 相关文章

  1. 1

    在postgres中标准化日期-迄今为止的字符

  2. 2

    迄今为止的Postgres时间戳

  3. 3

    Oracle String迄今为止的日期,最近7天回来

  4. 4

    迄今为止的字符串问题

  5. 5

    迄今为止的 Python 字符串

  6. 6

    VBA - 树可视化。可能是迄今为止最难的代码

  7. 7

    迄今为止的总和

  8. 8

    迄今为止的数字

  9. 9

    迄今为止的字符串-在C#中[“ 2014年1月13日星期一00:00:00 GMT + 0000(GMT标准时间)”]

  10. 10

    以整数形式返回自截止日期以来的工作日数,并使用 dplyr 添加迄今为止的工作日数

  11. 11

    迄今为止的Python数字字符串

  12. 12

    迄今为止的PHP UTC字符串

  13. 13

    迄今为止的Java字符串错误

  14. 14

    迄今为止给出的字符串格式

  15. 15

    迄今为止的字符串数组,Jsp-Servlet

  16. 16

    普及视图中的迄今为止的字符串

  17. 17

    通过迄今为止观察到的最大值对熊猫数据框列进行归一化

  18. 18

    迄今为止的弦乐弦

  19. 19

    迄今为止的动态天数

  20. 20

    如何在Lucene中标准化未知字符?

  21. 21

    如何在R中标准化字符串

  22. 22

    如何在R中标准化字符串

  23. 23

    如何在Lucene中标准化未知字符?

  24. 24

    Javascript NoGray日历添加迄今为止的天数,如果选定的日期被阻止,请在选定的阻止日期之后检查可用性

  25. 25

    连接表,基于 DATE 的总订单价格并获得 2 个不同日期记录的单独总和,而不是 1 个,这不是迄今为止唯一的

  26. 26

    Expression Builder:迄今为止的时间戳

  27. 27

    迄今为止的Javascript时间戳

  28. 28

    迄今为止需要写笔记

  29. 29

    添加迄今为止的工作日

热门标签

归档