在写查询功能的过程中遇到一个这样的问题:按日期范围查询,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. 【剑指Offer】55、链表中环的入口结点

      题目描述:   给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null.   解题思路:   本题是一个比较典型的链表题目,难度适中.首先,对于大多人来说,看到这道题是比较开心的 ...

  2. [luogu2329 SCOI2005] 栅栏(二分+搜索)

    传送门 Solution 纯搜索80分,加二分90分,再补一个小剪枝满分qwq 真.小剪枝:如果下一个的需求和当前相同,那么不需要再次从头开始试(看代码就明白了233) Code #include & ...

  3. 爬取表格类网站数据并保存为excel文件

    本文转载自以下网站:50 行代码爬取东方财富网上市公司 10 年近百万行财务报表数据 https://www.makcyun.top/web_scraping_withpython6.html 主要学 ...

  4. 在eclipse中运行maven命令没有反应,console也不打印信息

    eclipse的maven项目中,在run as  执行maven命令的时候发现毫无反应,console也不打印信息,原因是因为没有传参数,解决办法如下:①打开eclipse的window菜单: ②接 ...

  5. VMware虚拟机上安装CentOS 7

    下载CentOS7,点击网址下载,地址:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1804.iso ...

  6. ubuntu-kill命令-杀死进程

    显示进程pid ps -A 杀进程的命令 kill -s 9 xxx(进程pid)

  7. win10使用WampServer部署magento

     1.安装wampserver及php.apache.mySQL组件,访问http://www.wampserver.com/en/#download-wrapper,下载以下文件并依次安装:     ...

  8. MySQL优化之——为用户开通mysql权限

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46627263 为用户开通mysql权限: grant all privileges ...

  9. 全栈JavaScript之路( 二十 )HTML5 插入 html标记 ( 二 )insertAdjacentHTML

    insertAdjacentHTML(),  这种方法也是在IE中最早出现的.如今已纳入html5规范,它接受两个參数,一个是下列的标记之中的一个,一个是要写入的 html 代码文本. beforeb ...

  10. java内存结构(执行时数据区域)

    java虚拟机规范规定的java虚拟机内存事实上就是java虚拟机执行时数据区,其架构例如以下: 当中方法区和堆是由全部线程共享的数据区. Java虚拟机栈.本地方法栈和程序计数器是线程隔离的数据区. ...