air 讀取sqlite的Date型別 解決方案
來自air團隊的Paul Robertson 寫下sqlite中 類似Date型別的說明。將指導air自動處理date的
轉換。我遇到的Date型別的問題主要是在 DataGrid 使用了日期控制元件dateField 。下面的文章
還是對處理Dates 在air和sqlite中有一些幫助。
在處理 sqllite和air 互動中的date 值是很棘手的問題,會遇到各種未知的警告。
困擾我的是:actionscript雖然內建了UTC 函式,且sqllite 也會恰當的插入到DATETME型別的列中。
這看起來似乎一切都很正常。但是實際上sqllite不能識別類似DATE 的格式,僅僅是當作純文字來處理。
除非你打算應用一些date 格式化的 函式,跟蹤sqlllite的返回結果,否則是你不會體會到這個的。
Sqllite在資料完整性上是如此鬆散的:你可以隨意的插入任何東西到任何資料型別的列中,
這一切都不會發出警告。雖然Air 計算數值 基於Date的列,但是你會收到Invalid Date 錯誤,或者在更
新時發生未知的錯誤。
神奇的解決方案是:Julian Date Format ,他是sqllite 和 air 都可以當作 Date識別的。
奇怪的是actionscript居然沒有內建轉換Julian Dates的功能。
在使用Date時 ,請遵循以下準則
1:如果你在Air需要強型別的Date ,相關的Sqlite的列必須定義為 DATETIME 型別。有意思的是 DATETIME
不是一個識別的sqllite 列的型別。他被認為是Numeric數值型別。
2:當插入 或更新 DATETIME列時,你必須以Julian格式(or null)儲存。Sqllite是接受很多一般的date格式的。
請不要手動的在sqlite管理工具內錄入日期,那不是Julian格式的。但是Air是對不同的格式執行效果也不同的。
通過sql語句手動的插入一個Julian Date 使用:“%J”
//參與運算也要注意 Julia 格式
select * from USERS_Mood where RecordDate>STRFTIME('%J','2011-03-01') and RecordDate<STRFTIME('%J','2011-03-31') and User_ID= 'naiking'
insert into USERS_Mood (User_ID,RecordDate,MoodValue,MoodInfo) values('naiking',STRFTIME('%J','2011-03-20 03:04:05'),30,'nothing')
在as中 使用Julian Dates
{
var padded:String = original == null ? "" : original.toString();
while (padded.length < length) padded = pad + padded;
return padded;
}
public function toSqlDate(dateVal:Date):String
{
return dateVal == null ? null : dateVal.fullYear
+ "-" + lpad(dateVal.month + 1,2,'0') // month is zero-based
+ "-" + lpad(dateVal.date,2,'0')
+ " " + lpad(dateVal.hours,2,'0')
+ ":" + lpad(dateVal.minutes,2,'0')
+ ":" + lpad(dateVal.seconds,2,'0')
;
}
var myDate:Date = new Date(2008,0,2,3,4,5); // Jan 02, 2008 03:04:05
statement.text = "UPDATE my_table SET my_column = strftime('%J','" + toSqlDate(myDate) + "')";
相關文章
- springboot接收Date型別資料異常與解決辦法Spring Boot型別
- Sqlite—資料型別SQLite資料型別
- Date簡單型別的setter注入型別
- 基於.NET的程式讀取Excel檔案的解決方案Excel
- mongoose的date型別和timestamps的使用Go型別
- C語言中幾種報錯型別的解決方案C語言型別
- spring.jackson.date-format失效原因及解決方案SpringORM
- Android RecyclerView多型別佈局卡片解決方案AndroidView多型型別
- JavaScript 資料型別檢測終極解決方案JavaScript資料型別
- laravel 中 in 多列特殊查詢型別解決方案Laravel型別
- SQL Server日期資料型別DATE的使用SQLServer資料型別
- 快取的三大方案以及解決方案快取
- 一文讀懂快取穿透、快取擊穿、快取雪崩及其解決方案快取穿透
- Mysql日期(DATE, TIME, DATETIME, TIMESTAMP)型別的比較MySql型別
- Mybatis讀取和儲存json型別的資料MyBatisJSON型別
- 使用 requests 2.11 版本時的 Site ID 型別問題及解決方案型別
- CentOS7.6 U盤裝機,附無法讀取核心的解決方案CentOS
- 【Hive】日期從整形轉為Date型別Hive型別
- 快取穿透詳解及解決方案快取穿透
- Spring Boot + Redis 快取方案深度解讀Spring BootRedis快取
- 解決方案架構師的小錦囊 - 架構圖的 5 種型別架構型別
- Oracle date 型別比較和String比較Oracle型別
- SpringBoot Get 請求接收 Date 型別引數Spring Boot型別
- 分散式事務解決方案(五)【TCC型方案】分散式
- 快取穿透、快取擊穿、快取雪崩區別和解決方案快取穿透
- Redis快取的主要異常及解決方案Redis快取
- 面向金融機構的阿里雲SDWAN解決方案解讀阿里
- springcloud fegin獲取request header解決方案SpringGCCloudHeader
- Redis 快取穿透、快取雪崩原理及解決方案Redis快取穿透
- Mac brew 特別慢 解決方案Mac
- SpringBoot 通過Converter轉化 date型別引數Spring Boot型別
- fgetcsv解決讀取結尾是“ \ r”
- 全鏈路風控解決方案深度解讀
- 快取穿透、快取擊穿、快取雪崩概念及解決方案快取穿透
- 【Redis】快取穿透,快取擊穿,快取雪崩及解決方案Redis快取穿透
- REDIS快取穿透,快取擊穿,快取雪崩原因+解決方案Redis快取穿透
- 快取三大問題及解決方案快取
- 快取常見問題及解決方案快取
- 快取高一致性:Meta的快取失效解決方案快取