要将oracle函数转换为cast语句,使其成为ANSI标准吗
下面是我想用CAST函数替换为_CHAR的oracle查询要将oracle函数转换为cast语句,使其成为ANSI标准吗,oracle,oracle11g,Oracle,Oracle11g,下面是我想用CAST函数替换为_CHAR的oracle查询 SELECT tag.action_log_id, TO_CHAR (tag.action_date, 'MM/DD/YYYY HH:MI:SS AM') action_date, tag.tree_node AS chain, tag.environment AS environment, tag.table_name AS tablename, ta
SELECT tag.action_log_id,
TO_CHAR (tag.action_date, 'MM/DD/YYYY HH:MI:SS AM') action_date,
tag.tree_node AS chain, tag.environment AS environment,
tag.table_name AS tablename, tag.action, tag.action_log_sql,
tag.action_log_xml, tag.user_id
FROM ods.ods_fooditems_log tag
WHERE tag.action_date >= TO_DATE ('8/27/2013', 'MM/DD/YYYY')
AND TRUNC (tag.action_date) <= TO_DATE ('8/27/2014', 'MM/DD/YYYY')
AND tag.businessid = 167
ORDER BY tag.action_log_id DESC
选择tag.action\u log\u id,
TO_CHAR(tag.action_date,'MM/DD/YYYY HH:MI:SS AM')action_date,
tag.tree_节点作为链,tag.environment作为环境,
tag.table\u name为tablename、tag.action、tag.action\u log\u sql,
tag.action\u log\u xml,tag.user\u id
从ods.ods\u fooditems\u日志标记
其中tag.action\u date>=截止日期('2013年8月27日','MM/DD/YYYY')
和TRUNC(tag.action\u date)如果要使用cast
函数而不是to\u char
函数,则不能指定日期格式:
SQL> select cast(sysdate as Varchar2(15)) strdate from dual;
STRDATE
---------------
27.08.14
您必须在会话、系统或数据库级别指定此格式:
SQL> alter session set nls_date_format="MM/DD/YYYY HH:MI:SS AM";
Session altered.
SQL> select cast(sysdate as Varchar2(25)) from dual;
CAST(SYSDATEASVARCHAR2(25
-------------------------
08/27/2014 04:22:59 PM
您还可以按块收集此日期:
select extract(MONTH from sysdate) || '/' ||
extract(DAY from sysdate) || '/' ||
extract(YEAR from sysdate) || ' ' || ' ' ||
lpad(mod(extract(HOUR from cast(sysdate as timestamp)), 12), 2, '0') || ':' ||
lpad(extract(MINUTE from cast(sysdate as timestamp)), 2, '0') || ':' ||
lpad(extract(SECOND from cast(sysdate as timestamp)), 2, '0') || ' ' ||
case
when extract(HOUR from cast(sysdate as timestamp)) / 12 > 1 then 'PM'
ELSE 'AM'
end d
, sysdate current_date
from dual
D CURRENT_DATE
------------------------------------
8/27/2014 02:00:06 PM 08/27/2014
如果这是Oracle,请删除“mysql”标记。那么,你为什么要这样做TO_CHAR()
是一个非常合理的函数。将其转换为什么?请具体说明。要在查询中使用CAST()函数代替to_CHAR(),我希望我的查询与ANSI SQL标准兼容。因此,有没有其他方法可以不用强制转换,我可以使用哪个函数替换为_CHAR(),并提供所需的格式。非常感谢Zaratutra的回复。在这次更改中,我仍然收到试图转换为ANSI-92的消息。我不明白您的意思,您可以发现提取函数是ANSI-92的一部分。如果您对lpad
函数有问题,可以使用case
操作符,就像我用它来确定它是PM还是AM一样。