0

生年月日属性を含むデータセットがあります。日付形式はM/D/YYYY(2009 年 5 月 8 日などの 1 桁表記) で、テキスト形式で保存されます。ここで、列のタイプを日付に変更する必要があります。ただし、部分的な日付 (つまり、日または日と月の両方が欠落している) を持つ多くのエンティティ (手動で修正できるものよりも多い) があります。例えば:

"//1935"
"/5/1929"
"/4/1931"

to_date(birthdate,'DD/MM/YYYY')Postgresqlがこれらの日付を解析できないため、適用するとエラーが発生します。私がする必要があるのは、欠損値をデフォルト値で埋めることです。たとえば、"//1935"andはそれぞれand"/5/1929"に変換する必要があります。この問題を解決する簡単な方法はありますか? または、正規表現パーサーを作成する必要がありますか?"1/1/1935""1/5/1929"

4

1 に答える 1

1

SQL フィドルのデモ

CREATE TABLE product
    ("inputDate" varchar(9))
;

INSERT INTO product
    ("inputDate")
VALUES
    ('//1935'),
    ('/5/1929'),
    ('/4/1931')
;

SELECT *,
       CASE WHEN substr("inputDate", 1, 2) = '//' THEN '1/1/' || substr("inputDate", 3, 10)
            WHEN substr("inputDate", 1, 1) = '/' THEN '1/' || substr("inputDate", 2, 10)
            ELSE "inputDate"
       END as result
FROM Product;
于 2016-04-06T16:27:51.433 に答える