Meridianmeridian

Japanese Imperial Year (Long/Kanji)

datetime.date.jp_era_long

Full Japanese era name in kanji followed by year, month, day with Chinese-style character delimiters. Used in formal Japanese government and legal documents.

Domain
datetime
Category
date
Casts to
DATE
Scope
Universal

Try it

CLI
$ finetype infer -i "令和6年1月15日"
→ datetime.date.jp_era_long

DuckDB

Detect
SELECT finetype('令和6年1月15日');
-- → 'datetime.date.jp_era_long'
Cast expression
CASE
  WHEN {col} LIKE '\u4EE4\u548C%' THEN make_date(2018 + CAST(regexp_extract({col}, '(\d+)\u5E74', 1) AS INT), CAST(regexp_extract({col}, '(\d+)\u6708', 1) AS INT), CAST(regexp_extract({col}, '(\d+)\u65E5', 1) AS INT))
  WHEN {col} LIKE '\u5E73\u6210%' THEN make_date(1988 + CAST(regexp_extract({col}, '(\d+)\u5E74', 1) AS INT), CAST(regexp_extract({col}, '(\d+)\u6708', 1) AS INT), CAST(regexp_extract({col}, '(\d+)\u65E5', 1) AS INT))
  WHEN {col} LIKE '\u662D\u548C%' THEN make_date(1925 + CAST(regexp_extract({col}, '(\d+)\u5E74', 1) AS INT), CAST(regexp_extract({col}, '(\d+)\u6708', 1) AS INT), CAST(regexp_extract({col}, '(\d+)\u65E5', 1) AS INT))
  WHEN {col} LIKE '\u5927\u6B63%' THEN make_date(1911 + CAST(regexp_extract({col}, '(\d+)\u5E74', 1) AS INT), CAST(regexp_extract({col}, '(\d+)\u6708', 1) AS INT), CAST(regexp_extract({col}, '(\d+)\u65E5', 1) AS INT))
  WHEN {col} LIKE '\u660E\u6CBB%' THEN make_date(1867 + CAST(regexp_extract({col}, '(\d+)\u5E74', 1) AS INT), CAST(regexp_extract({col}, '(\d+)\u6708', 1) AS INT), CAST(regexp_extract({col}, '(\d+)\u65E5', 1) AS INT))
END
Safe cast pipeline
-- Normalise and cast in one step
SELECT TRY_CAST(finetype_cast(my_column) AS DATE) AS clean_value
FROM my_table
WHERE finetype(my_column) = 'datetime.date.jp_era_long';

Struct Expansion

Expression
era_name: regexp_extract({col}, '^([^0-9]+)', 1)
era_year: CAST(regexp_extract({col}, '(\d+)年', 1) AS INT)

JSON Schema

finetype schema datetime.date.jp_era_long
{
  "$id": "https://meridian.online/schemas/datetime.date.jp_era_long",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Full Japanese era name in kanji followed by year, month, day with Chinese-style character delimiters. Used in formal Japanese government and legal documents.",
  "examples": [
    "令和6年1月15日",
    "平成31年4月30日",
    "昭和64年1月7日"
  ],
  "pattern": "^(令和|平成|昭和|大正|明治)\\d{1,2}年\\d{1,2}月\\d{1,2}日$",
  "title": "Japanese Imperial Year (Long/Kanji)",
  "type": "string",
  "x-finetype-broad-type": "DATE",
  "x-finetype-transform": "CASE\n  WHEN {col} LIKE '\\u4EE4\\u548C%' THEN make_date(2018 + CAST(regexp_extract({col}, '(\\d+)\\u5E74', 1) AS INT), CAST(regexp_extract({col}, '(\\d+)\\u6708', 1) AS INT), CAST(regexp_extract({col}, '(\\d+)\\u65E5', 1) AS INT))\n  WHEN {col} LIKE '\\u5E73\\u6210%' THEN make_date(1988 + CAST(regexp_extract({col}, '(\\d+)\\u5E74', 1) AS INT), CAST(regexp_extract({col}, '(\\d+)\\u6708', 1) AS INT), CAST(regexp_extract({col}, '(\\d+)\\u65E5', 1) AS INT))\n  WHEN {col} LIKE '\\u662D\\u548C%' THEN make_date(1925 + CAST(regexp_extract({col}, '(\\d+)\\u5E74', 1) AS INT), CAST(regexp_extract({col}, '(\\d+)\\u6708', 1) AS INT), CAST(regexp_extract({col}, '(\\d+)\\u65E5', 1) AS INT))\n  WHEN {col} LIKE '\\u5927\\u6B63%' THEN make_date(1911 + CAST(regexp_extract({col}, '(\\d+)\\u5E74', 1) AS INT), CAST(regexp_extract({col}, '(\\d+)\\u6708', 1) AS INT), CAST(regexp_extract({col}, '(\\d+)\\u65E5', 1) AS INT))\n  WHEN {col} LIKE '\\u660E\\u6CBB%' THEN make_date(1867 + CAST(regexp_extract({col}, '(\\d+)\\u5E74', 1) AS INT), CAST(regexp_extract({col}, '(\\d+)\\u6708', 1) AS INT), CAST(regexp_extract({col}, '(\\d+)\\u65E5', 1) AS INT))\nEND\n"
}

Examples

令和6年1月15日平成31年4月30日昭和64年1月7日

Aliases

wareki_long