当前位置:  开发笔记 > 前端 > 正文

SQLite DateTime比较

如何解决《SQLiteDateTime比较》经验,为你挑选了6个好方法。

我似乎无法从使用日期时间字符串作为比较的sqlite数据库的查询中获得可靠的结果,如下所示:

select * 
  from table_1 
 where mydate >= '1/1/2009' and mydate <= '5/5/2009'

我该如何处理与sqlite的日期时间比较?

update:field mydate是DateTime数据类型

解:

遵循datetime函数并具有字符串格式为YYYY-MM-DD HH:mm:ss我取得了如下良好的结果,如下所示

select * 
  from table_1 
  where mydate >= Datetime('2009-11-13 00:00:00') 
  and mydate <= Datetime('2009-11-15 00:00:00')

小智.. 96

为了解决这个问题,我将日期存储为YYYYMMDD.从而, where mydate >= '20090101' and mydate <= '20050505'

它只是简单的工作.您可能只需要编写一个解析器来处理用户输入日期的方式,以便将它们转换为YYYYMMDD.



1> 小智..:

为了解决这个问题,我将日期存储为YYYYMMDD.从而, where mydate >= '20090101' and mydate <= '20050505'

它只是简单的工作.您可能只需要编写一个解析器来处理用户输入日期的方式,以便将它们转换为YYYYMMDD.


如果格式是标准化的,那么YYYY-MM-DD如何与没有短划线的情况有所不同?不会比较结果一样吗?
@Damon:我认为他对数据类型使用int
我使用:yyyyMMddHHmm没问题,我希望yyyyMMddHHmmss能够同样工作

2> 小智..:

SQLite没有专用的日期时间类型,但确实有一些日期时间函数.遵循那些函数理解的字符串表示格式(实际上只有格式1-10)(将值存储为字符串)然后你可以使用它们,加上字符串上的词典比较将匹配日期时间比较(只要你不这样做)尝试将日期与时间或日期时间进行比较,这无论如何都没有多大意义.

根据您使用的语言,您甚至可以获得自动转换.(这不适用于SQL语句中的比较,例如示例,但会让您的生活更轻松.)


对于阅读第一句话的所有人来说,在'17 SQLite确实有'date`和`datetime`
昨天在这里阅读有关类型相似性的信息:https://www.sqlite.org/datatype3.html基本上,如果您需要日期,则可以在该列中声明一个“日期”(或“日期时间”),该列在内部被视为“文字`。这符合我的需求。

3> 小智..:

我最近遇到了同样的问题,我解决了这个问题:

SELECT * FROM table WHERE 
    strftime('%s', date) BETWEEN strftime('%s', start_date) AND strftime('%s', end_date)



4> 小智..:

以下对我来说使用SQLite很好:

SELECT * 
    FROM ingresosgastos 
    WHERE fecharegistro BETWEEN "2010-01-01" AND "2013-01-01"



5> Hardeep Sing..:

Sqlite无法比较日期.我们需要转换为秒并将其转换为整数.

SELECT * FROM Table  
WHERE  
CAST(strftime('%s', date_field)  AS  integer) <=CAST(strftime('%s', '2015-01-01')  AS  integer) ;



6> 小智..:

以下对我有用。

SELECT *
FROM table_log
WHERE DATE(start_time) <= '2017-01-09' AND DATE(start_time) >= '2016-12-21'

推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有