2012-05-08 7 views
0

これはSELECTクエリのコードです。 SELECT * FROM TableName WHERE (DateField = Date)Matlab:データベース。 SQLの書き直し

function out = SQL_Simple(DBName, TableName, Date, DateField, SortField, Limits) 

logintimeout(60); 
conurl = ['jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)}; DBQ=' DBName]; 
conn = database('','','','sun.jdbc.odbc.JdbcOdbcDriver', conurl); 


Limits = Limits + 1; 
sql = ['SELECT * FROM ' TableName ]; 
sql = [sql ' WHERE (' DateField ' = ' Date ')']; 

interest = fetch(exec(conn, sql)); 


%sql = [sql ' ORDER BY ' SortField ' DESC' ]; 
%sql = [sql ' LIMIT ' Limits]; 

close(conn); 
out = interest.Data; 
end 

となります。

このクエリで何が問題になっていますか?

DateFieldは、タイプadDateである。 Dateの形式はdd.mm.yyyyです。

p.s:

これは、DB内のテーブルです:

DBTable.Name = "MyTable" 
DBTable.Columns.Append "StrField", adVarWChar, 160 
DBTable.Columns.Append "DoubleField", adDouble, 40 
DBTable.Columns.Append "IntField", adInteger 
DBTable.Columns.Append "CurField", adCurrency 
DBTable.Columns.Append "Today", adDate 

DateField='Today'。私はこのような何かを書こうと

matlabコードで):あなたが投稿する場合には役立ちます

sql = ['SELECT * FROM ' TableName ]; 
sql = [sql ' WHERE (' DateField ' = ''' Date ''');' ]; 

それはあまりにも動作しません:((ここではDate = '2010-12-31 00:00:00.0'、DateFieldに= 'Today'

+0

*とはどういう意味ですか?* – zimdanen

+0

それは0を返すので、大きな行ではないので – gaussblurinc

+0

追加質問:それはSQLのMySQLの方言ではなく、mssqlを使用しますか? – gaussblurinc

答えて

0

を実際のエラーmesasgeこの場合は、しかし、私は一つの問題は、日付の比較だと思うあなたは、「日」の前後に引用符が必要に試してみてください。。。のための

sql = [sql ' WHERE (' DateField ' = ''' Date ''')']; 

を2番目のSQL行。

+0

ではありません。動作しません。 'Date'は' dd.mm.yyyy'という形式を持ち、 'DateField'は' adDate'です。だから、 'yyyy-mm-dd hh:mm:ss.ms'のように' Date'を変更する方法は? – gaussblurinc

+0

matlab関数 'datenum'と' datestr'を使用します – Smash

+0

DateFieldは日付ではなくカラム名でなければならないので、その周りに引用符を付けるべきではありません。それ以外の場合、where条件は2つの定数を比較します。 – Dan