博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQLite 日期操作
阅读量:7102 次
发布时间:2019-06-28

本文共 2221 字,大约阅读时间需要 7 分钟。

在数据库中经常会遇到对日期的操作,如插入时期、查询介于某两个日期之间的记录等等,这里记录一个在SQLite中处理时间的例子。由于用到了dotnetBar控件,所以顺带把dotnetBar中的DateTimeInput控件时间格式设置介绍一下。

首先是SQLite中日期的操作

在SQLite中,日期的存储类型为date,下面这个例子,在创建tbIncome表时,创建了一个date类型的列recordDate:

create table if not exists tbIncome  (     id             integer     primary key     autoincrement,    recordDate     date,     amount         float,    summery     vchar(140));

相应地,向tbIncome中插入数据时,对应于recordDate列的应该是一个date类型的日期数据:

insert into tbIncome ( recordDate, amount, summery) values (date('2012-01-01'),1000,"no summery");

如果是从gui的控件获得数据,然后再插入数据库,可以这么写:

private void btnAddRecord_Click(object sender, EventArgs e)        {            var item = new RecordItem();            item.recordDate = this.dateTimeInput1.Text.Trim();            item.amount  = (float)Convert.ToDouble( this.tbAmount.Text );            item.summery = this.tbSummery.Text.Trim();                   Insert2Income(item);    DialogResult = DialogResult.Yes;        }
private void Insert2Income(RecordItem i)        {            con.Open();            string sql = string.Format("insert into tbIncome ( recordDate, amount, summery) values (date('{0}'),{1},'{2}')",                i.recordDate,i.amount,i.summery);            cmd = new SQLiteCommand(sql, con);            int n = cmd.ExecuteNonQuery();            MessageBox.Show(n.ToString()+"records inserted!");            con.Close();                    }

SQlite中默认的日期格式时4位年,2位月,2位日,也就是yyyy-MM-dd格式,在插入日期数据时,不论我们给出的时2012-01-01还是2012-1-1,插入到数据库之后都是2012-01-01,因此在后续我们要对数据库中的日期进行操作时,都必须用yyyy-MM-dd格式,否则肯定什么也查不到:

select * from tbIncome where recordDate between '2012-02-02' and '2012-05-05';

好了,下一个话题。在实际的应用中,我们一般会在gui上有一日期选择的控件,让用户选一个查询的起始日期或终止日期之类,在标准的winform中一般式DateTimepicker,这里我用得是DotnetBar里的DateTimeinput,和DateTimepicker类似。

DateTimeInput默认的日期格式是short型,也就是yyyy-mm-dd格式,直接用这个去查数据库是不行的,因此我们在控件的初始化时修改他的日期格式:

this.dateTimeInput1.CustomFormat = "yyyy-MM-dd";this.dateTimeInput1.Format = DevComponents.Editors.eDateTimePickerFormat.Custom;

在查询数据库时,使用类似下面的语句:

string sql = string.Format("select * from tbIncome where recordDate between '{0}' and '{1}'", this.dateTimeInput1.Text.Trim(),this.dateTimeInput2.Text.Trim());

 

转载于:https://www.cnblogs.com/zhoufanking/archive/2012/08/27/2657931.html

你可能感兴趣的文章
分布式与集群
查看>>
互联网服务器的实现过程需要考虑哪些安全问题 & 加解密及哈希知识点
查看>>
sql server2008给数据表,字段,添加修改注释
查看>>
meta标签清理缓存
查看>>
【数据结构】二叉树
查看>>
onvif开发之设备发现功能的实现--转
查看>>
虚拟机下linux迁移造成MAC地址异常处理办法
查看>>
数据库事务原子性、一致性是怎样实现的?[转]
查看>>
“营改增”后你该知道的…代开发票需要知道的16个事项
查看>>
arcgis10.1连接sqlserver数据库常见问题(转载)
查看>>
动态设置js的属性
查看>>
Fragment的setUserVisibleHint方法实现懒加载,但setUserVisibleHint 不起作用?
查看>>
@responsebody注解的作用就是让viewresolver不起作用,不返回视图名称而是直接返回的return object...
查看>>
lodash(二)对象+循环遍历+排序
查看>>
Eclipse快捷键大全
查看>>
Java -- 获取MAC地址
查看>>
Visual Prolog 的 Web 专家系统 (1)
查看>>
void 指针的转换
查看>>
再议Unity优化
查看>>
localhost兼容js不能用
查看>>