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方法是一致的
您是否尝试过在日期常量周围使用单引号?首先阅读位于的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