sql - 如何使用 to_date 函数转换复杂的 sysdate + 其他内容?

标签 sql oracle to-date to-char

有点卡在这里。假设我运行以下 SQL 查询:

select to_char(sysdate, 'DD/MON/YY') || ' 15:32:00' from dual;

结果给了我这个:

08/NOV/12 15:32:00

现在我想获取该结果并将其用于 to_date 函数(原因很长,但我稍后会详细介绍):

select to_date((to_char(sysdate, 'DD/MON/YY') || ' 15:32:00'), 'DD/MON/YY HH24:MI:SS') from dual;

我原以为结果会与前一个相同,但事实并非如此。相反,它给了我这个:

08/NOV/12

问题是这样的:有没有办法可以在 to_date 中使用 to_char(sysdate, 'DD/MON/YY') 和 HH24:MI:SS 的任意组合的串联?

可能有也可能没有任何额外用途的其他详细信息: 我需要这样做的原因是因为我收到了一个查询,其中包含一个带有 SLA 时间的表。格式只是 HH24:MI 中的时间,但它不是 DATETIME 类型(我怀疑它是 VARCHAR,但不能确定,因为它可能是我无法剖析的某种 View 或函数。部分原因是我不知道如何做,部分是因为我的数据库用户没有必要的访问权限。

编辑:再次阅读上面的内容时,我意识到我遗漏了一些额外的细节(尽管我认为这与我的问题根本无关): 我想获取今天的日期 (DD/MON/YY),将其与 HH:MI 的 SLA 时间相结合,将其与 :SS 的“:00”相结合,将整个日期转换为日期,然后在结果令人厌恶,并返回每行的完成时间。如果完成时间比我的组合和转换豪华版更大/更新/晚,则返回特定的内容,否则返回“All OK”之类的内容。不确定这是否有意义,但总而言之,我想得到一些可以用来与另一个 DATETIME 类型进行比较的东西,所以我认为我也需要以某种方式将 SLA 时间转换为 DATETIME 类型。

对此的任何帮助将不胜感激。

最佳答案

您看到的输出已转换为字符格式。这是由 NLS_DATE_FORMAT 设置决定的。在内部,日期仍将具有关联的时间格式。因此,请执行以下操作来查看它:

SQL> select sysdate from dual;

SYSDATE
---------
08-NOV-12

SQL> alter session set nls_date_format='dd/MON/yy hh24:mi:ss';

Session altered.

SQL> select sysdate from dual;

SYSDATE
------------------
08/NOV/12 11:41:46

关于sql - 如何使用 to_date 函数转换复杂的 sysdate + 其他内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13288169/

相关文章:

sql - Informix 中的日期格式

amazon-redshift - 在 Redshift 中将文本转换为时间戳

sql - Oracle PL/SQL 检查参数是否有特殊字符

sql - 执行 (28 : 6): ORA-00600: internal error code, 参数 : [], [], [], [], []

sql - 甲骨文 - 将日期分成几个季度

sql - Oracle 中的 ansi SQL 日期函数

mysql - 在 MySQL 中更改表时出现错误

php - 带有 IN 子句和多个条件的 MYSQL Select 语句

java - 获取异常 ORA-00942 : table or view does not exist - when inserting into an existing table

sql - CASE 语句和 DECODE 是否等效?