2016-04-29 103 views
1

我有一组数据可导入到SqlLite中,但实际上并没有机会在插入之前操作它。我试图计算日期的“年龄”,但在目前的格式中这是非常困难的。如何将SqlLite中的日期从m/d/y转换为Ymd,以便我可以使用strftime

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

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))

我想,如果有投日期到正确的格式计算方式在一个查询中的年龄,这将节省一个步骤,但我一直无法找到一种方法。

回答

1

您可以使用下面的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格式只能更新日期,其中dm也可以是两位数字。

+0

您已假定日期存储为字符串。我希望它已被存储为“日期”。 – wallyk

+0

Sqlite没有日期存储类。 – trincot

+0

完美,谢谢! – AceoStar

相关问题