将完整单词日期转换为数字

Convert full words date into numbers

提问人:James McGrath 提问时间:8/20/2022 更新时间:9/2/2022 访问量:43

问:

我在数据库中有一堆用全字写成的日期,我需要将它们转换为可用的日期字段。这是一次易,但有几百万行,所以手动进行是不可想象的。

“一九八九年一月二十六日”将变为“1989/01/26”

格式并不总是一样,我也可以有“一千九百九十年八月十九日”

理想情况下,在 SQL 中执行此操作会更容易,但我可以运行脚本并在之后更新数据库。

有什么建议吗?

日期 类型转换 与语言无关

评论


答:

0赞 James McGrath 9/2/2022 #1

我的代码对于我的情况来说太具体了,无法在这里发布,但这是我为数字所做的伪代码,所以也许有人会省去头痛,尤其是法语数字。

NumberString = 'Nineteen hundred ninety nine'

-- Replace each word individually by their value : Nineteen hundred ninety nine would be 19,100,90,9 (or 10,9,100,4,20,10,9 in French)
NumberString= '19 100 90 9'    
-- For French only, replace '4 20' by 80 (easier for the next step)

Total = 0
NumberArray = NumberString.SplitOnSpaces
FOREACH Numbers as Number
  IF Number is not a power of 100 THEN Total += Number
  IF Number is a power of 100 THEN
    IF Total%Number = 0 THEN Total += Number
    ELSE 
      ModuloTemp = Total%Number
      Total -= ModuloTemp
      Total += ModuloTemp * Number
END

当数字分成部分时,它不起作用,比如 2020 年是“二十二十”,但它足以满足我的需求。

然后对于日期,我只找到该月的位置。如果是日、月、年,您可以使用月份作为分隔符来重建日期。如果是月、日、年,那么你必须找到序数(第一、第二、第十等)来区分年份和日期。