2012-01-01 530 views
1

我試圖在時間戳字段(yyyy-mm-dd HH:mm:ss)中重新格式化爲特定日期時在Coldfusion中查詢查詢。我可以將原始查詢轉換爲「日期格式」,但我無法獲得查詢查詢來選擇日期。我試圖將cf_sql queryparam更改爲不同的值,但我一直得到0 RecordCount。數據庫字段是一個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 2013-01-17 19:59:03

回答

2

MySQL的date_format()函數返回一個字符串,而不是DateTime對象,所以在運行的ColdFusion查詢的查詢時,你可以使用CF_SQL_VARCHAR數據類型,而不是CF_SQL_DATE數據類型。傳入的值需要與第一個查詢返回的值完全匹配以匹配。

其他注意事項:

1)使用CFDUMP顯示第一次查詢的結果,以確保返回的數據類型是你期待什麼。

2)在第一個查詢的WHERE子句中也使用CFQUERYPARAM

+0

謝謝,幫助!我最終使用STR_TO_DATE(DateSent,'%Y-%m-%d%T')AS DateSent而不是'date_format(DateSent,'%Y-%m-%d')作爲DateSent'將其轉換爲一個日期時間對象,然後能夠用查詢的CF查詢解析原始查詢。 – 2012-01-02 17:02:31

+0

太棒了,這篇文章幫了我很多。我還使用了cf_sql_date而不是cf_sql_varchar – Tan 2013-07-16 18:37:21