【问题标题】:Coldfusion MySQL Query of Queries date selectionsColdfusion MySQL Query of Queries 日期选择
【发布时间】:2012-01-01 20:05:16
【问题描述】:

我正在尝试使用重新格式化为特定日期的时间戳字段 (yyyy-mm-dd HH:mm:ss) 在 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>

【问题讨论】:

  • db 字段是一个 varchar 不要将日期存储为字符串。将日期存储为日期。那么您就不必担心这些类型的隐式转换问题。另外,您可以利用内置的日期函数而无需进行所有转换..

标签: mysql coldfusion date-format qoq


【解决方案1】:

MySQL date_format() 函数返回一个字符串,而不是日期时间对象,因此在 ColdFusion 中运行查询时,您将使用 CF_SQL_VARCHAR 数据类型而不是 CF_SQL_DATE 数据类型。传入的值也需要与第一个查询返回的值完全匹配才能匹配。

其他注意事项:

1) 使用CFDUMP 显示第一个查询的结果,以确保返回的数据类型是您所期望的。

2) 在第一个查询的 WHERE 子句中也使用 CFQUERYPARAM

【讨论】:

  • 感谢您的帮助!我最终使用STR_TO_DATE( DateSent, '%Y-%m-%d %T' ) AS DateSent 而不是date_format(DateSent, '%Y-%m-%d') As DateSent 将其转换为日期时间对象,然后能够使用查询的CF 查询解析原始查询。
  • 太棒了,这篇文章对我帮助很大。我也在使用 cf_sql_date 而不是 cf_sql_varchar
猜你喜欢
  • 2021-05-05
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多