在SQLITE中将字符串转换为日期

时间:2013-03-22 05:55:53

标签: android sqlite

我可以使用strtime函数将SQLITE日期格式转换为任何格式的字符串 即

select  strftime('%Y-%d-%m-%Y', '2012-09-13 12:44:22');

但我有dd-MM-yyyy格式的字符串,如何在yyyy-MM-dd中转换为sqlite格式,以便我可以在日期比较中使用它。

3 个答案:

答案 0 :(得分:8)

使用类似的东西:

select datetime(substr(col, 7, 4) || '-' || substr(col, 4, 2) || '-' || substr(col, 1, 2)) from table;

其中 col table 的列,其日期格式为yyyy-MM-dd

答案 1 :(得分:2)

你可以试试这个

String date = "23-03-2013";
try {
    SimpleDateFormat format = new SimpleDateFormat(""dd-MM-yyyy");

    SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");

   date = df2.format(format.parse(str));

} catch (java.text.ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

答案 2 :(得分:0)

我遇到了类似的问题,其中日期字符串输入不一致,因此月份,日期和年份的长度不一致。以下是我将不一致格式化为M / D / YYYY的字符串转换为格式为YYYY-MM-DD的日期所做的工作:

    SELECT "DISP DATE", DATE(year||'-'||month||'-'||day) as dt_frmtd 
    FROM 
    (
    SELECT *
, CASE WHEN LENGTH(substr("DISP DATE", 1, instr("DISP DATE",'/')-1)) = 2 
       THEN substr("DISP DATE", 1, instr("DISP DATE",'/')-1)
       ELSE '0'|| substr("DISP DATE", 1, instr("DISP DATE",'/')-1)
       END as month
, CASE WHEN LENGTH(substr(substr("DISP DATE", instr("DISP DATE",'/')+1), 1, instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')-1)) = 2
       THEN substr(substr("DISP DATE", instr("DISP DATE",'/')+1), 1, instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')-1)
       ELSE '0'|| substr(substr("DISP DATE", instr("DISP DATE",'/')+1), 1, instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')-1)
       END AS day           
, CASE WHEN LENGTH(substr(substr("DISP DATE", instr("DISP DATE",'/')+1), instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')+1)) = 4
       THEN substr(substr("DISP DATE", instr("DISP DATE",'/')+1), instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')+1)
       ELSE '20'|| substr(substr("DISP DATE", instr("DISP DATE",'/')+1), instr(substr("DISP DATE", instr("DISP DATE",'/')+1),'/')+1)
       END AS year 
    FROM DISP 
    )