Javascript 关于日期时间查询的sqlite

Javascript 关于日期时间查询的sqlite,javascript,sql,sqlite,Javascript,Sql,Sqlite,帮我解决这个问题 我将某些数据以毫秒为单位存储在数据库中。但这不是我想要的格式,所以我把它转换成了实际的日期格式。该格式在运行时更新为新列。 strftime(毫字段*1000,'%Y%m%d%H:%m:%s')作为日期 这将在新列中返回实际日期和时间格式 但这里的问题是,如果我想要过去六个月的某些特定数据,那么我尝试了以下方法: MillisField>2017-12-01 它没有显示过去六个月的数据, 但是,如果我尝试这样做: MillisField>1512066600000 它显示了我想

帮我解决这个问题

我将某些数据以毫秒为单位存储在数据库中。但这不是我想要的格式,所以我把它转换成了实际的日期格式。该格式在运行时更新为新列。
strftime(毫字段*1000,'%Y%m%d%H:%m:%s')
作为日期

这将在新列中返回实际日期和时间格式

但这里的问题是,如果我想要过去六个月的某些特定数据,那么我尝试了以下方法:

MillisField>2017-12-01

它没有显示过去六个月的数据, 但是,如果我尝试这样做:

MillisField>1512066600000


它显示了我想要的确切结果,但我不想以毫秒为单位,我需要日期格式。

2017-12-01=2004也就是说,没有引号是数字,所以从2017年减去01和12,结果是2004年,远远小于1512066600000

'2017-12-01'是一个字符串,单独比较会导致不一致的结果

你需要做的是确保你是在一个接一个地比较,而不是口头上比较苹果和桔子

以下内容可能有助于更好地理解如何进行比较以及如何不进行比较

  • 两个给定日期2017-12-01(日期后以毫秒为单位进行测试)和2000-01-01(数据前以毫秒为单位进行测试)
:-

因此:-
  • compare001/101、compare002/102和compare004/104并不总是返回正确的结果
  • compare003/103和compare005/105方法是一致的
i、 e

可靠(即将不同格式转换为兼容格式以进行比较)

来自上述SQL的结果 以上生成(分为2个显示):-

您是否尝试过在日期常量周围使用单引号?首先阅读位于的SQLite3
strftime
函数的文档,然后根据需要返回以进行说明。(提示:SQLite中没有专用的日期/时间格式,但支持对某些格式进行日期/时间操作。)
SELECT
    date('2000-01-01') AS date001,
    date('2017-12-01') AS date002,

    datetime('2000-01-01') AS dattim001,
    datetime('2017-12-01') AS dattim002,

    strftime('%s','2000-01-01') AS secs_date001, --  946684800
    strftime('%s','2017-12-01') AS secs_date002, -- 1512086400 (2017-11-30 18:30:00)

    datetime(1512066600,'unixepoch') AS comparison_as_date,

-- Is 946684800 (2000-01-01) > 1512066600 (2017-11-30) (NO but!!)
    datetime('2000-01-01') > 1512066600 AS compare001, -- 1 = true = yes (WRONG)
    CAST(datetime('2000-01-01') AS INTEGER) > 1512066600 AS compare002, -- 0 = false = no  (CORRECT)
    datetime('2000-01-01') > datetime(1512066600,'unixepoch') AS compare003, -- 0 = false = no (CORRECT)
    strftime('%s','2000-01-01') > 1512066600 AS compare004, -- 1 = true = yes (WRONG)
    CAST(strftime('%s','2000-01-01') AS INTEGER) > 1512066600 AS compare005, -- 0 = false = no (CORRECT)

-- Is 1512086400 (2017-12-01) > 1512066600000 (2017-11-30) (YES but!!)
    datetime('2017-12-01') > 1512066600 AS compare101, -- 1 = true = yes (CORRECT)
    CAST(datetime('2017-12-01') AS INTEGER) > 1512066600 AS compare102, -- 0 = false = no  (WRONG) 
    datetime('2017-12-01') > datetime(1512066600,'unixepoch') AS compare103, -- 1 = true = yes (CORRECT)
    strftime('%s','2017-12-01') > 1512066600 AS compare104, -- 1 = true = yes (CORRECT)
    CAST(strftime('%s','2017-12-01') AS INTEGER) > 1512066600 AS compare105 -- 1 = true = yes (CORRECT)
datetime('2000-01-01') > datetime(1512066600,'unixepoch')
CAST(strftime('%s','2000-01-01') AS INTEGER) > 1512066600