文档章节

Sqlite时间段查询中遇到的问题

rainbowcode
 rainbowcode
发布于 06/17 20:08
字数 606
阅读 5
收藏 0

问题:

我要查询DateTime时间其中的一段符合时间要求的数据,比如我要查询‘2019-06-06 16:50:00’至‘2019-06-06 16:59:00’这一段的数据

开始用这段代码

strSql= ("select * from CollectTableRtd where datetime(DateTime)>=datetime('2019-06-06 16:50:00') and datetime(DateTime)<=datetime('2019-06-06 16:59:00')");  是可以查询出来的,然后换下面代码:

strSql= ("select * from CollectTableRtd where datetime(DateTime)>=datetime('datetime_strf1') and datetime(DateTime)<=datetime('datetime_strf2')");   

其中datetime_strf1、datetime_strf2是从控件读取的选择时间,然而并没有正确读取,下面也一样:

strSql= ("select * from CollectTableRtd where datetime(DateTime)>=datetime(datetime_strf1) and datetime(DateTime)<=datetime(datetime_strf2)");   

sprintf(strSql,"select * from CollectTableRtd where datetime(DateTime)>=datetime('%s') and datetime(DateTime)<=datetime('%s')",datetime_strf1.GetBuffer(),datetime_strf2.GetBuffer());

后来查阅资料得知需要用%S读取,结果并验证正确,附代码如下:

sprintf(strSql,"select * from CollectTableRtd where datetime(DateTime)>=datetime('%S') and datetime(DateTime)<=datetime('%S')",datetime_strf1.GetBuffer(),datetime_strf2.GetBuffer());

在这里将%s与%S的区别讲一讲,如下:

请看MSDN:http://msdn.microsoft.com/zh-cn/library/hf4y5e3w(v=vs.90).aspx

的解释。

 

 

s

String

When used with printf functions, specifies a single-byte–character string; when used with wprintf functions, specifies a wide-character string. Characters are printed up to the first null character or until the precision value is reached.

S

String

When used with printf functions, specifies a wide-character string; when used with wprintf functions, specifies a single-byte–character string. Characters are printed up to the first null character or until the precision value is reached.

 

使用s时,printf是针对单字节字符的字符串,而wprintf是针对宽字符的

使用S时,正好相反,printf针对宽字符

 

CString中的format与printf类似,在unicode字符集的工程中,使用

CString str1, str2;

str1.format(_T("%S"), str2);

%S专指单字节字符的字符串,而str2为宽字符,类型不匹配,故出现不可预期的错误。

 

若str2为英文字符,如“abcd”,就只能输出a,因str2为宽字符,a有两个字节,值为0x0061,在内存中为61 00,故按单字节输出只能输出61,碰到00,即空字符后认为字符串结束,不会再输出。

若str2为中文字符,中文字符一般会占满两字节,而按单字节字符就会按一个字节一个字节的输出,故会输出乱码。
 

© 著作权归作者所有

rainbowcode
粉丝 0
博文 46
码字总数 72936
作品 0
西安
私信 提问
sqlite rowid与主键

rowid和 Integer主键及自增属性 大多数情况下,sqlite3的表都有一个rowid(也叫oid,rowid),这是一个64位的整数,并作为sqlite存储结构B树的主键.因此使用rowid查询会比以其他设定的主键查询,速度...

IMGTN
2013/04/26
0
1
SQLite 3.8.8 发布,数据库服务器

SQLite 3.8.8 发布,此版本是 SQLite 常规的维护版本,没有引人注目的新特性或者性能改进,只是不断的在改进。主要的性能提升是通过重构 B-Tree 重整逻辑来避免不必要的 memcpy() 操作。新特...

oschina
2015/01/17
3.8K
11
2010年SQLite学习笔记之二(2)

创建数据库文件: >SQLite3 d:/test.db 回车 就生成了一个test.db在d盘。 这样同时也SQLite3挂上了这个test.db 2) 用.help可以看看有什么命令 >.help 回车即可 3)可以在这里直接输入SQL语句创...

jpch
2013/12/11
0
0
Android 小项目之--SQLite 使用法门

每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库 --大名鼎鼎的SQLite。SQLite是一款轻量级数据库,它的设计目的是嵌入式,而且它占用的资...

mayi
2011/11/14
0
2
SQLite 3.8.9 发布,数据库服务器

SQLite 3.8.9 发布,新增功能包括 PRAGMA index_xinfo 命令, sqlite3_status64 ( ) 接口和命令行 shell 的 .dbinfo 命令。更多的信息参见发行说明。 SQLite是遵守ACID的关联式数据库管理系统...

oschina
2015/04/09
3K
11

没有更多内容

加载失败,请刷新页面

加载更多

Linux输入法fcitx的安装问题

Fcitx 总共要安装的包如下 fcitxfcitx-binfcitx-config-commonfcitx-config-gtk | fcitx-config-gtk2fcitx-datafcitx-frontend-allfcitx-frontend-gtk2fcitx-frontend-gtk3......

CHONGCHEN
50分钟前
4
0
网络基础

前言: 最近整理一些以前的学习笔记(有部分缺失,会有些乱,日后再补)。 过去都是存储在本地,此次传到网络留待备用。 计算机网络的功能: 1.数据通信; 2.资源共享; 3.增加数据可靠性; 4....

迷失De挣扎
50分钟前
5
0
spring boot升级到spring cloud

1、先升级spring boot 版本到2.1.3 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.1.3.RELEAS......

moon888
53分钟前
10
0
从蓝鲸视角谈DevOps

DevOps源于Development和Operations的组合 常见的定义 DevOps是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变...

嘉为科技
56分钟前
1
0
微服务设计 笔记

微服务设计 一、微服务架构理论 1.六边形架构 1)六边形架构(Hexagonal Architecture),又称为端口和适配器架构风格;使用适配器与外界进行交互,外界通过应用层API与内部进行交互。 2)经典...

啃不动地大坚果
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部