SQLite: 关于日期的标准化问题
SQLite在日期上和有些SQL不太一样,不管是查询还是数据本身,都有自已的特定的要求。这个要求就是,日期一定需要满足标准化要求。 以下用Julia语言来进行说明。 一、不是标准化的日期数据输入 我们做一个试验,日期格式是2014-9-15之类,并不是标准的2014-09-15,2014-10-06类。共insert 四条数据,包括日期类的数据。 using SQLite; query(db,"CREATE TABLE newTest (DTime VARCHAR,Price Float)") # 建立一个新的表,newTest append(db,["2014-10-6T09:18.123" 3076.50]) 在这情况下, 如果你用这样的标准的查询条件,其结果,可能是数据库没有反应,要么就是不正常返回。 “SELECT * FROM newTest WHERE DTime> '2014-09-15'” 二、不是标准化的日期查询条件 相反,假定我们在insert 时,是标准的数据输入,但是在查询是,查询条件不标准的话,也是不行的。 不标准的查询格式: SELECT * FROM newTest WHERE DTime> '2014-9-15' -----看到没,9前面没有带0呀,坑爹的地方,一定要注意! 总结:在日期上,每个小于10的(MM,DD)一定要在前面补上0,这个在数据输入和查询时都至关重要。 三、查询 数据格式对了,在查询上也需要注意。 假定DTime是VARCHAR格式,查询条件可以是 SELECT * FROM newTest WHERE DTime>date("2014-09-17") 但不接受这二种格式,感觉有点怪! SELECT * FROM newTest WHERE datetime(DTime)>datetime("2014-09-17") SELECT * FROM newTest WHERE date(DTime)>date("2014-09-17") 再次总结,SQLite在日期上,有点个性,感觉有点怪。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |