2012-01-01 21 views
1

特定の日付に再フォーマットされたタイムスタンプフィールド(yyyy-mm-dd HH:mm:ss)を使用してColdfusionでクエリをクエリしようとしています。私は元のクエリを "日付の形式"うまくいくことができますが、私は日付を選択するクエリのクエリを取得することはできません。私はcf_sql queryparamを異なる値に変更しようとしましたが、私は0 RecordCountを得続けます。 dbフィールドはvarcharで、タイムスタンプに変更しようとしましたが、それでも動作しませんでした。私が見ていないものは何ですか?Coldfusion MySQLクエリの日付選択

<cfquery datasource="#DataSource#" name="rsAll"> 
    SELECT ID, date_format(DateSent, '%Y-%m-%d') As DateSent 
    FROM 'workorders' 
    WHERE RelCompID_FK = '#SESSION.Auth.CompID#' 
</cfquery> 

<cfquery name="rsAllDay" dbtype="query"> 
    SELECT * 
    FROM rsAll 
    WHERE DateSent = <cfqueryparam value="2010-03-03" cfsqltype="cf_sql_date"> 
</cfquery> 
+0

* dbフィールドはvarcharです。*日付を文字列として保存しないでください。日付を*として保存します。次に、これらの暗黙の変換問題について心配する必要はありません。さらに、すべての変換なしで、組み込みの日付関数を利用することができます。 – Leigh

答えて

2

のMySQL date_format()機能は、ColdFusionでのクエリのクエリを実行しているときに、あなたが代わりにCF_SQL_DATEデータ型のCF_SQL_VARCHARデータ型を使用し、文字列ではなく、DateTimeオブジェクトを返します。渡された値は、最初のクエリから返された値と正確に一致する必要があります。

その他の考慮事項:

1)データ型を返すことを保証するために、最初のクエリの結果を表示するには、CFDUMPを使用して、あなたが期待しているものです。

2)最初のクエリのWHERE句にもCFQUERYPARAMを使用してください。

+0

ありがとうございました!私は 'date_format(DateSent、 '%Y-%m-%d')の代わりに' STR_TO_DATE(DateSent、 '%Y-%m-%d%T')AS DateSent'を使用して終了しました。 datetimeオブジェクトを作成し、元のクエリをクエリのCFクエリで解析することができました。 –

+0

素晴らしいですが、この投稿は私を助けました。 cf_sql_varcharの代わりにcf_sql_dateも使用していました – Tan