在写查询功能的过程中遇到一个这样的问题:按日期范围查询,sql语句是:where dt>=用户选择起始日期&&dt<=用户选择结束日期。数据库中的数据如图1,我选择的测试数据起始时间是2008-01-06结束日期是2009-06-01。期望的结果应该能查出第一条数据。执行sql语句并无错误,但是查询到的结果为空。在网上查找原因,这才知道字符串时间比较大小是按照数字一位位比较的。只有格式对应的字符串才能比较大小。用户选择的时间格式是YYYY-MM-dd而数据库数据的格式是YYYY-M-d,比较日期大小时出错。

图1

这时的解决办法是把数据库中数据的格式更改为YYYY-MM-dd。问题来了。

用户用的数据库是Sqlserver,因开发需要我们公司用的是Sqlite数据库,需要将用户的Sqlserver数据表导入到我们的Sqlite数据库。SqlServer数据库中时间格式是YYYY-MM-dd HH:mm:ss(SqlServer数据库会把插入的datetime类型数据自动规范成YYYY-MM-dd HH:mm:ss类型)导入时我选择的是Navicat Premium工具。导入数据成功,在Sqlite中打开数据表时发现表中数据是YYYY-M-d格式。原因是Sqlite数据库不支持datetime类型的数据,因此数据库中dt是Text类型,不能像Sqlite那样自动规范日期字段格式。如图1:Sqlite中数据是2009-6-1没有补0,测试数据选择的结束日期2009-06-01,比较时6>0,所以数据库第一条数据没有查询出来。

解决办法是:先把SqlServer中的数据导入到Excel中,再把.xls导入到Sqlite数据库。

1.把SqlServer中的数据导入到Excel中。导入之前先新建一个Excel文档,把数据库中的字段名写到第一行作为列头(即把此文档作为数据导入的模板)如图2。导出时使用SqlServer自带的导出数据功能,具体方法不再详细叙述。在选择目标时,Excel文件路径选择建好的Excel文档,首行包含列名称项可选可不选如图3。

                               

图2                                                                                                        图3

注意:如果不在导出之前写上列头建好Excel模板,导出时会报错如图4。如果导出的日期时间仍不会补0,尝试新建Excel模板,选中日期列右键设置单元格格式为文本,然后重复以上步骤。

图4

2.最后将导出成功的Excel文档导入到Sqlite数据库,使用Navicat Premium工具即可做到,使用该工具导入时可选择日期时间类型数据的分隔符是-还是/。具体导入方法不再叙述。

SqlServer数据库表导入SqlLite数据库表保持日期时间类型字段的格式的更多相关文章

  1. Mysql 建表时,日期时间类型选择

    mysql(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示  D ...

  2. linux mysql 数据库操作导入导出 数据表导出导入

    linux mysql 数据库操作导入导出 数据表导出导入 1,数据库导入 mysql -uroot -p show databases; create database newdb; use 数据库 ...

  3. 数据库里面DataTime时间类型字段,如果为null时

    tran.TransactionTime = bet.CreationDate.ToString() == "0001/1/1 0:00:00" ? DateTime.Now : ...

  4. MySQL建表时,日期时间类型选择

    MySQL(5.5)所支持的日期时间类型有:DATETIME. TIMESTAMP.DATE.TIME.YEAR. 几种类型比较如下: 日期时间类型 占用空间 日期格式 最小值 最大值 零值表示  D ...

  5. C#将Excel数据表导入SQL数据库的两种方法(转)

    最近用写个winform程序想用excel 文件导入数据库中,网上寻求办法,找到了这个经过尝试可以使用. 方法一: 实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环 ...

  6. C#将Excel数据表导入SQL数据库的两种方法

    最近用写个winform程序想用excel 文件导入数据库中,网上寻求办法,找到了这个经过尝试可以使用. 方法一: 实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环 ...

  7. 如何将EXCEL表导入ORACLE数据库中?【转】

    来源:https://zhidao.baidu.com/question/383828330.html?qbl=relate_question_2&word=excel%20%B1%ED%CA ...

  8. PowerDesigner如何把建好的表导入到数据库中,并且把注释也导入进去

    第一次接触这个软件,经过自己的捣鼓和百度,终于可以顺利的导入数据库中了,好开森,希望可以帮助到更多人. 数据库(mysql)其实和sqlserver差不多,以16.5版本为例 1.选中一个PDM项目, ...

  9. 使用NPOI将Excel表导入到数据库中

    public string ExcelFile() { //指定文件路径, string fileName=@"d:\Stu.xls"; //创建一个文件流,并指定其中属性 usi ...

随机推荐

  1. 【转载】关于DBUtils中QueryRunner的一些解读

    前面已经有文章说了DBUtils的一些特性, 这里再来详细说下QueryRunner的一些内部实现, 写的有错误的地方还恳请大家指出. QueryRunner类 QueryRunner中提供对sql语 ...

  2. json-lib与Jackson的区别和用法分析

    一.Jackson概述 1.jackson包和版本 Jackson fasterxml和codehaus的区别: 他们是Jackson的两大分支.也是两个版本的不同包名.Jackson从2.0开始改用 ...

  3. 【剑指Offer】35、数组中的逆序对

      题目描述:   在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对.输入一个数组,求出这个数组中的逆序对的总数P.并将P对1000000007取模的结果输出. 即输出P ...

  4. HDU 2267 How Many People Can Survive(广搜,简单)

    题目 //一道简单的广搜水题 #include<queue> #include<stdio.h> #include<string.h> #include<al ...

  5. 宏、预编译(day12)

    指针数组里的每个存储区是一个指针类型 的存储区 字符指针数组里包含多个字符类型指针,其中 每个指针可以表示一个字符串 字符指针数组可以用来表示多个相关字符串 主函数的第二个参数是一个字符指针数组, 其 ...

  6. 使用pandas中的raad_html函数爬取TOP500超级计算机表格数据并保存到csv文件和mysql数据库中

    参考链接:https://www.makcyun.top/web_scraping_withpython2.html #!/usr/bin/env python # -*- coding: utf-8 ...

  7. ubuntu 16.04 忘记登录密码的解决办法

    1.开机点击ESC或长按Shift,进入GUN GRUB界面  2.选择有recovery mode的选项,按e进入命令行  3.找到有recovery nomodeset的行,删除recovery ...

  8. python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    来啦,老弟 我们已经知道怎么使用 Requests 进行各种请求骚操作 也知道了对服务器返回的数据如何使用 正则表达式 来过滤我们想要的内容 ... 那么接下来 我们就使用 requests 和 re ...

  9. 汉澳sinox2014x64server已经能够下载

    大家快去下载,用迅雷快速下载 下载地址 ftp://sinox.3322.org/sinox2014x64server.img 已经能够下载 ftp://sinox.3322.org/sinox201 ...

  10. 图像处理中的数学原理具体解释20——主成分变换(PCA)

    欢迎关注我的博客专栏"图像处理中的数学原理具体解释" 全文文件夹请见 图像处理中的数学原理具体解释(总纲) http://blog.csdn.net/baimafujinji/ar ...