air 读取sqlite的Date类型 解决方案

前端之家收集整理的这篇文章主要介绍了air 读取sqlite的Date类型 解决方案前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

来自air团队的Paul Robertson写下sqlite中 类似Date类型的说明。将指导air自动处理date

转换。我遇到的Date类型的问题主要是在 DataGrid 使用了日期控件dateField 下面的文章

还是对处理Dates airsqlite中有一些帮助。

在处理 sqlliteair 交互中的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

UPDATEmy_tableSETmy_column = STRFTIME( ' %J ' , ' 2008-01-0203:04:05 ' );
//参与运算也要注意 Julia 格式
select * from USERS_Mood where RecordDate>STRFTIME('%J','2011-03-01') and RecordDate<STRFTIME('%J','2011-03-31') and User_ID= 'naiking'

insertintoUSERS_Mood(User_ID,RecordDate,MoodValue,MoodInfo)values(
' naiking ' ,STRFTIME( ' %J ' , ' 2011-03-2003:04:05 ' ), 30 , ' nothing ' )

as 使用Julian Dates

public functionlpad(original:Object,length: int ,pad:String):String
{
varpadded:String
= original == null ? "" :original.toString();
while (padded.length < length)padded = pad + padded;
return padded;
}

public functiontosqlDate(dateVal:Date):String
{
return dateVal == null ? null :dateVal.fullYear
+ " - " + lpad(dateVal.month + 1 , 2 , ' 0 ' ) // monthiszero-based
+ " - " + lpad(dateVal.date, ' 0 ' )
+ " " + lpad(dateVal.hours, ' 0 ' )
+ " : " + lpad(dateVal.minutes, ' 0 ' )
+ " : " + lpad(dateVal.seconds, ' 0 ' )
;
}

varmyDate:Date
= new Date( 2008 , 0 , 3 , 4 , 5 ); // Jan02,200803:04:05
//也可以直接 var myDate=new Date();试试吧
statement.text = " UPDATEmy_tableSETmy_column=strftime('%J',' " + tosqlDate(myDate) + " ') " ;

猜你在找的Sqlite相关文章