Выбор даты запросов Coldfusion MySQL Query of Queries

Я пытаюсь выполнить запрос в Coldfusion с полем метки времени (гггг-мм-дд ЧЧ: мм: сс), переформатированным на определенную дату. Я могу получить исходный запрос к «формату даты», но я не могу получить запрос запроса для выбора даты. Я попытался изменить параметр запроса cf_sql на разные значения, но я продолжаю получать 0 RecordCount. Поле db представляет собой varchar, и я попытался изменить его на метку времени, но это все равно не сработало. Есть идеи, чего я не вижу?

<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>

person Wade H    schedule 01.01.2012    source источник
comment
Поле db представляет собой тип varchar. Не храните даты в виде строк. Хранить даты как даты. Тогда вам не придется беспокоиться о такого рода проблемах с неявным преобразованием. Кроме того, вы можете воспользоваться встроенными функциями даты без всех преобразований.   -  person Leigh    schedule 17.01.2013


Ответы (1)


Функция MySQL date_format() возвращает строку, а не объект даты и времени, поэтому при выполнении запроса запроса в ColdFusion вы должны использовать тип данных CF_SQL_VARCHAR вместо типа данных CF_SQL_DATE. Передаваемое значение должно точно совпадать со значением, возвращаемым из первого запроса, а также для соответствия.

Другие соображения:

1) Используйте CFDUMP для отображения результатов первого запроса, чтобы убедиться, что возвращаемые типы данных соответствуют вашим ожиданиям.

2) Используйте CFQUERYPARAM также в предложении WHERE вашего первого запроса.

person Justin Scott    schedule 01.01.2012
comment
Спасибо, что помогло! В итоге я использовал STR_TO_DATE( DateSent, '%Y-%m-%d %T' ) AS DateSent вместо date_format(DateSent, '%Y-%m-%d') As DateSent, чтобы преобразовать его в объект даты и времени, а затем смог проанализировать исходный запрос с помощью запроса CF запросов. - person Wade H; 02.01.2012
comment
Круто, этот пост мне очень помог. Я также использовал cf_sql_date вместо cf_sql_varchar. - person Tan; 16.07.2013