21

I am using sqlite for local database in mobile and in my database, I have date field with column name RN_CREATE_DATE. My RN_CREATE_DATE column value is in this format 'dd-mm-yy HH:MM:SS' and I want to fetch data with given date. What will be the exact query for that I tried with below database column and value

**RN_CREATE_DATE

2012-07-27 11:04:34

2012-05-28 10:04:34
2012-07-22 09:04:34**

SELECT  RN_CREATE_DATE 
FROM DISPOSITION 
WHERE  RN_CREATE_DATE=strftime('%Y', '2012-07-28 12:04:34')

but no result found, just help me out with this.

4

4 に答える 4

37

strftime次のように動作します:

sqlite> select strftime('%d-%m-%Y %H:%M:%S', datetime('now'));
2012-09-13 12:42:56

WHERE句で使用する場合datetime('now')は、フォーマットで一致させたい日時 に置き換えYYYY-mm-dd HH:MM:SSます。

例:

SELECT *
  FROM t
 WHERE c = strftime('%d-%m-%Y %H:%M:%S', '2012-09-13 12:44:22');
--                   dd-mm-YYYY HH:MM:SS  YYYY-mm-dd HH:MM:SS
于 2012-09-13T12:45:01.537 に答える
1

strftimeは常に 4 桁の年を生成するためsubstr、最初の 2 桁を切り取る必要があります。

... WHERE RN_CREATE_DATE = strftime('dd-mm-', '2012-07-28 12:04:34') ||
                           substr(strftime('%Y %H:%M:%S', '2012-07-28 12:04:34'), 3)

SQLite が直接理解できる形式で列の値を格納する方が簡単です。

于 2012-09-13T20:55:48.030 に答える
0

strftime('%Y', '2012-07-28 12:04:34')2012を次のように返します。

sqlite> select strftime('%Y', '2012-07-28 12:04:34');
2012

しかし、RN_CREATE_DATE は datetime 型であり、'2012-07-28 12:04:34' のような完全な日時を想定しています。あなたが望むのは単純かもしれません:

SELECT  RN_CREATE_DATE 
FROM DISPOSITION 
WHERE  RN_CREATE_DATE='2012-07-28 12:04:34'
于 2012-09-13T12:50:33.027 に答える