Sqlite時間段查詢中遇到的問題

問題:ide

我要查詢DateTime時間其中的一段符合時間要求的數據,好比我要查詢‘2019-06-06 16:50:00’至‘2019-06-06 16:59:00’這一段的數據code

開始用這段代碼orm

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')");   ci

其中datetime_strf一、datetime_strf2是從控件讀取的選擇時間,然而並無正確讀取,下面也同樣:unicode

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());string

後來查閱資料得知須要用%S讀取,結果並驗證正確,附代碼以下:it

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

在這裏將%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爲中文字符,中文字符通常會佔滿兩字節,而按單字節字符就會按一個字節一個字節的輸出,故會輸出亂碼。  

相關文章
相關標籤/搜索