在sqlite中转换日期格式yyyy-mm-dd

时间:2013-11-11 07:04:40

标签: android sqlite

在sqllite 2013-10-29

中需要这样的日期格式

我的查询是SELECT strftime('%Y-%m-%d', '29/10/2013')

但它显示空白输出。我不知道是什么问题。

我的日常事件

=================================

SELECT cast(julianday() - julianday((substr(date_time,7,4) || '-' ||  substr(date_time,4,2) || '-' || substr(date_time,0,3)))as integer) as DayDiff  from sms_table

6 个答案:

答案 0 :(得分:2)

根据documentationstrftime的第二个参数是timestring,需要采用以下格式之一:

  
      
  • YYYY-MM-DD
  •   
  • YYYY-MM-DD HH:MM
  •   
  • YYYY-MM-DD HH:MM:SS
  •   
  • YYYY-MM-DD HH:MM:SS.SSS
  •   
  • YYYY-MM-DD Ť HH:MM
  •   
  • YYYY-MM-DD Ť HH:MM:SS
  •   
  • YYYY-MM-DD Ť HH:MM:SS.SSS
  •   
  • HH:MM
  •   
  • HH:MM:SS
  •   
  • HH:MM:SS.SSS
  •   
  • 立即
  •   
  • DDDDDDDDDD
  •   

您的斜杠分隔字符串不是这些字符串,因此无法解析。

我建议您在首先将数据插入数据库之前更改格式(假设您的查询通常会在您的数据上运行)。

如果你不能这样做,你很可能需要使用字符串操作直接转换为首选格式,或者转换为上述形式之一,以便然后使用strftime

答案 1 :(得分:1)

如果您无法控制提供给数据库的日期字符串,则可以按此操作提交日期:

SELECT
    REPLACE(SUBSTR(d, CASE SUBSTR(d, 6, 1) WHEN '/' THEN 7 ELSE 5 END), '/', '')||'-'|| --Year
    SUBSTR('0'||REPLACE(SUBSTR(d, 3, CASE SUBSTR(d, 4, 1) WHEN '/' THEN 2 ELSE 3 END), '/', ''), -2)||'-'|| --Month
    SUBSTR('0'||REPLACE(SUBSTR(d, 1, 2), '/', ''), -2) --Day
FROM (SELECT '11/11/2013' AS d);

答案 2 :(得分:0)

将日期转换为毫秒,然后使用

SELECT strftime("%Y-%m-%d", 1384108200000/1000 , 'unixepoch').

这是使用strftime的方法之一

答案 3 :(得分:0)

您可以转换日期格式

SimpleDateFormat sdfSource = new SimpleDateFormat("dd/MM/yyyy");

Date date = sdfSource.parse(sourceDate);

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

destinationDate = sdfDestination.format(date);

答案 4 :(得分:0)

this answer中所述,您可以将日期转换为毫秒,然后使用:

String someDate = "1995-01-01";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(someDate);
System.out.println(date.getTime());

答案 5 :(得分:0)

答案可能不适用于Android - 通常情况下,如果原始日期看起来像mm/dd/yyyy且所需格式为yyyy-mm-dd,则可以轻松更改每一行:

更新tableName set claimDate = substr(claimDate,7)|| ' - '|| substr(claimDate,1,2)|| ' - '|| SUBSTR(claimDate,4,2)

或只选择

选择substr(claimDate,7)|| ' - '|| substr(claimDate,1,2)|| ' - '||来自tableName的substr(claimDate,4,2)

claimDatetableName

中的字段