我有一组要导入到SqlLite中的数据,但实际上没有机会在插入之前对其进行操作。我正在尝试计算日期的“年龄”,但是以当前格式证明这非常困难。

我正在寻找一个可用于更新数据,然后开始以所需方式编写查询的选择。

Data Samples
9/20/1983
2/18/1986
8/1/1994
5/29/1999

Desired
1983-09-20
1986-02-18
1994-08-01
1999-05-29


一旦有了这种格式的数据,我将使用以下方法计算日期

(strftime('%Y', 'now') - strftime('%Y', Born)) - (strftime('%m-%d', 'now') < strftime('%m-%d', BOrn))

我猜是否有一种方法可以将日期转换为正确的格式并在一个查询中计算年龄,这可以节省一个步骤,但是到目前为止我还没有找到一种方法。

最佳答案

您可以使用以下update语句将日期格式更改为YYYY-MM-DD:

update t
set    Born =
       substr(Born, -4) || '-' ||
       substr('0' || substr(Born, 1, instr(Born, '/')-1), -2) || '-' ||
       substr('0' || substr(Born, instr(Born, '/')+1,
                                  length(Born)-5-instr(Born, '/')), -2)
where  substr(Born, -5, 1) = '/'
and    Born LIKE '%/%/%'


where子句仅用于更新具有d / m / yyyy格式的日期,其中d和m也可以是两位数。

10-07 16:12