SQLite: 关于日期的标准化问题

   SQLite在日期上和有些SQL不太一样,不管是查询还是数据本身,都有自已的特定的要求。这个要求就是,日期一定需要满足标准化要求。

    以下用Julia语言来进行说明。

   一、不是标准化的日期数据输入

        我们做一个试验,日期格式是2014-9-15之类,并不是标准的2014-09-15,2014-10-06类。共insert 四条数据,包括日期类的数据。

        using SQLite;
        db=SQLiteDB("C:\\Users\\Administrator\\Desktop\\sqliteData\\sqliteDB.db")

        query(db, "CREATE TABLE newTest (DTime VARCHAR, Price Float)") #  建立一个新的表,newTest
        append(db,"newTest",["2014-9-15T09:15.123" 3056.50]) # 在 insert 一条不标准的日期数据格式
        append(db,"newTest",["2014-9-15T09:16.123" 3066.50]) 
        append(db,"newTest",["2014-9-16T09:18.123" 3076.50])

        append(db,"newTest",["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 DTime>'2014-09-17'   -----单引号

        但不接受这二种格式,感觉有点怪!

        SELECT * FROM newTest WHERE datetime(DTime)>datetime("2014-09-17")

        SELECT * FROM newTest WHERE date(DTime)>date("2014-09-17")

        再次总结,SQLite在日期上,有点个性,感觉有点怪。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值