2012-05-12 26 views
0

我在使用WebSQL将数据存储在浏览器中的SQLite数据库中的ExtJS中编写应用程序。 (这些要求仅适用于网络浏览器,幸运的是我?)我遇到了日期字段的问题。在SQLite中用ExtJS存储Javascript日期

我在我的UI中使用ExtJS的datefield s处理Javascript日期。我的SQLite架构使用datetime字段来存储它们。当我保存数据时,SQLite抱怨违反了违规行为,但数据仍然存在,所以我并不在乎。

问题是我需要在SQLite中进行一些比较,以填充ExtJS网格。但由于日期格式是Javascript数据格式,而不是SQLite可接受的datetime格式之一,因此在sql中进行比较是行不通的。

我的sql无法比较日期,因为它不符合SQLite预期的格式。我如何解决这个问题?

我保存数据时,把它放在SQLite的喜欢("Y-m-d")的格式,但无济于事使用Ext.Data.format()尝试。我也研究过从Javascript日期格式转换为SQL的日期时间格式在我的SQL与Date()函数,但那也没有奏效。

任何想法?

+0

[这](http://www.sqlite.org/lang_datefunc.html)指定的SQLite的日期时间格式。你可以在你的代码中加入一些调试来正确地打印*发送给SQLite的字符串吗? – jimw

+0

就像我说的,我使用的是Javascript日期对象,所以格式为:'Fri May 11 2012 20:32:54 GMT-0600(MDT)' – Miles

回答

1

它不适用于此?

Ext.create ('Ext.container.Container', { 
    renderTo: Ext.getBody() , 
    items: [{ 
     xtype: 'datefield' , 
     fieldLabel: 'date' , 
     format: "Y-m-d" 
    } , { 
     xtype: 'button' , 
     text: 'Push me' , 
     listeners: { 
      click: function (button) { 
       console.log (button.previousSibling('datefield').getRawValue()); 
      } 
     } 
    }] 
}); 

它打印'2012-05-12'。 如果您使用的getValue()你是错的,因为(从ExtJS的文件):

返回字段的当前数据值。返回的值的类型特定于特定字段的类型(例如Ext.form.field.Date的Date对象),因为对字段的已处理字符串值调用rawToValue。要返回原始字符串值,请参阅getRawValue。

希望这有助于你:d

+0

啊,是的,这是问题所在。谢谢! – Miles