将 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#的查询中使用&lt;cfqueryparam&gt;,否则您将面临各种问题 即使 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的主要内容,如果未能解决你的问题,请参考以下文章

怎么在Oracle中将时间戳转化为日期格式

怎么在Oracle中将时间戳转化为日期格式

oracle日期转换问题

oracle中日期转换

oracle SQL语句,日期格式转换

oracle时间戳6转换为sql server datetime2错误