将 oracle sql 时间戳转换为 char Coldfusion
Posted
技术标签:
【中文标题】将 oracle sql 时间戳转换为 char Coldfusion【英文标题】:Convert oracle sql timestamp to char coldfusion 【发布时间】:2014-07-30 08:42:29 【问题描述】:我要做的是将 oracle 时间戳转换为_char,以便人眼可以阅读。
以下是我的SQL代码:
<cfquery datasource="#application.dsn#" name="hdlbillDetails">
SELECT BILLID, FIRSTNAME,
LASTNAME, RESIDENCE,
STREET, TOWN,
COUNTRY, AMMOUNTDUE,
to_char(DATEDUE,'YYYY-MM-DD HH24:MI:SS'),
to_char(DATEISSUES,'YYYY-MM-DD HH24:MI:SS')
FROM Details
WHERE BillID = #billId#
</cfquery>
显示的错误如下:
Caused by: coldfusion.runtime.UndefinedElementException:
Element DATEDUE is undefined in HDLBILLDETAIL
【问题讨论】:
你的表中有日期吗?检查拼写或存在 是的,如果我删除 to_char 部分并仅写入 DATEDUE,则数据将检索为 oracle.sql.TIMESTAMP@26d780b6 请在您使用#billID#
的查询中使用<cfqueryparam>
,否则您将面临各种问题
即使 billID 来自另一个数据库,使用查询参数仍然有优势。提高性能和转义特殊字符是其中两个。
只是为了确认 Dunc 和 Dan 所说的:参数化数据值不仅仅是关于 SQL 注入,它主要是关于将数据与 SQL 语句分开。如果你这样做了,那么你的数据库将有更多的运气来维护它的执行计划。如果将值硬编码到 SQL 中,则每次进行查询时都需要编译数据库,而不是使用参数时编译一次。
【参考方案1】:
未经测试,但试试这个。这可能只是在计算中需要别名:
<cfquery datasource="#application.dsn#" name="hdlbillDetails">
SELECT BILLID, FIRSTNAME,
LASTNAME, RESIDENCE,
STREET, TOWN,
COUNTRY, AMMOUNTDUE,
to_char(DATEDUE,'YYYY-MM-DD HH24:MI:SS') as DATEDUE,
to_char(DATEISSUES,'YYYY-MM-DD HH24:MI:SS') as DATEISSUES
FROM Details
WHERE BillID = #billId#
</cfquery>
【讨论】:
谢谢它的工作!没想到是因为没有别名。【参考方案2】:尝试使用别名,例如
<cfquery datasource="#application.dsn#" name="hdlbillDetails">
SELECT d.BILLID, d.FIRSTNAME,
d.LASTNAME, d.RESIDENCE,
d.STREET, d.TOWN,
d.COUNTRY, d.AMMOUNTDUE,
to_char(d.DATEDUE,'YYYY-MM-DD HH24:MI:SS') as DATEDUE,
to_char(d.DATEISSUES,'YYYY-MM-DD HH24:MI:SS') as DATEISSUES
FROM Details d
WHERE d.BillID = #billId#
</cfquery>
【讨论】:
以上是关于将 oracle sql 时间戳转换为 char Coldfusion的主要内容,如果未能解决你的问题,请参考以下文章