1

在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
4

6 回答 6

2

根据文档,第二个参数strftime是 a 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 T HH:MM
  • YYYY-MM-DD T HH:MM:SS
  • YYYY-MM-DD T HH:MM:SS.SSS
  • 高:MM
  • HH:MM:SS
  • HH:MM:SS.SSS
  • 现在
  • DDDDDDDDDD

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

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

如果您不能这样做,您很可能需要使用字符串操作来直接转换为您喜欢的格式,或者转换为上述格式之一,以便您可以使用strftime.

于 2013-11-11T07:12:28.543 回答
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);
于 2013-11-11T10:04:14.757 回答
0

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

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

这是使用 strftime 的方法之一

于 2013-11-11T07:13:02.420 回答
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());
于 2013-11-11T07:19:45.950 回答
0

答案可能不适用于 Android - 通常,如果原始日期看起来像mm/dd/yyyy并且所需的格式是 yyyy-mm-dd,那么可以轻松地更改每一行:

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

或者只是选择

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

claimDate是字段tableName

于 2015-05-04T17:10:47.683 回答
-1

您可以转换日期格式

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

Date date = sdfSource.parse(sourceDate);

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

destinationDate = sdfDestination.format(date);
于 2013-11-11T07:16:09.880 回答