如何在SQLite上将年份与MM/DD/YY格式分开

如何在SQLite上将年份与MM/DD/YY格式分开,sql,sqlite,date,datetime,Sql,Sqlite,Date,Datetime,我有一个日期格式为MM/DD/YY的表,但它也可以像M/D/YY或MM/D/YY或M/DD/YY,所以我不能使用substr,因为字符串长度发生了变化 例如1/2/98或10/5/12或12/2/10等。由于SQlite没有任何截止日期函数,我也不能使用它 这张桌子看起来像这样 +-------+----------+ | NAME | DATE | +-------+----------+ | John | 12/1/04 | | Megan | 4/11/85 | | Doe

我有一个日期格式为MM/DD/YY的表,但它也可以像M/D/YY或MM/D/YY或M/DD/YY,所以我不能使用substr,因为字符串长度发生了变化

例如1/2/98或10/5/12或12/2/10等。由于SQlite没有任何截止日期函数,我也不能使用它

这张桌子看起来像这样

+-------+----------+
| NAME  |   DATE   |
+-------+----------+
| John  | 12/1/04  |
| Megan | 4/11/85  |
| Doe   | 9/18/17  |
| Smith | 10/27/10 |
+-------+----------+
预期的产出是这样的

+-------+------+
| NAME  | DATE |
+-------+------+
| John  |   04 |
| Megan |   85 |
| Doe   |   17 |
| Smith |   10 |
+-------+------+
我不知道如何,但如果疯狂的程序员能做到这一点

+-------+------+
| NAME  | DATE |
+-------+------+
| John  | 2004 |
| Megan | 1985 |
| Doe   | 2017 |
| Smith | 2010 |
+-------+------+

那太棒了。可能的限制是任何的东西都可以使用字符串函数

这将为您提供第一个结果集:

select name, substr(date, -2) date from mytable
第二个结果集需要一点条件逻辑:

select 
    name, 
    1900 + substr(date, -2) + 100 * (0 + substr(date, -2) <= 20) date
from mytable

name | date :---- | ---: John | 2004 Megan | 1985 Doe | 2017 Smith | 2010 姓名|日期 :---- | ---: 约翰| 2004 梅根| 1985 能源部| 2017 史密斯| 2010
可以使用字符串函数

这将为您提供第一个结果集:

select name, substr(date, -2) date from mytable
第二个结果集需要一点条件逻辑:

select 
    name, 
    1900 + substr(date, -2) + 100 * (0 + substr(date, -2) <= 20) date
from mytable

name | date :---- | ---: John | 2004 Megan | 1985 Doe | 2017 Smith | 2010 姓名|日期 :---- | ---: 约翰| 2004 梅根| 1985 能源部| 2017 史密斯| 2010