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

ドキュメントによると、 の 2 番目の引数は でstrftimeあり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
  • 時:分
  • 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

この回答で説明されているように、日付をミリ秒に変換してから使用できます。

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 に答える
-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 に答える