To_date 在 Year 通配符前返回 2 个零

Posted

技术标签:

【中文标题】To_date 在 Year 通配符前返回 2 个零【英文标题】:To_date returning 2 zeros in front of Year wildcard 【发布时间】:2015-07-24 04:13:22 【问题描述】:

我想将“开始日期”和“结束日期”转换为不同于其他格式 (DD/MM/YYYY HH24:MM) 的不同格式 (YYYY-MM-DD HH24:MI:SS)。

当我运行以下命令时:

Update blarg
Set test1 = 'test',
test2 = 'test',
Start_Date = To_Date('23/07/2015 22:00','YYYY-MM-DD HH24:MI:SS'),
End_Date = To_Date('24/07/2015 00:00','YYYY-MM-DD HH24:MI:SS')
Where Id = '4';

数据库中的插入包括...

Start_Date = '0023-07-20 15:22:00'
End_Date = '0024-07-20 15:00:00'

我可以理解 Oracle 可能无法检测到初始日期格式并且不知道将值放在哪里,但我很好奇您是否可以告诉 Oracle 原始日期通配符,然后将其与通配符合并你想把它变成卡片。

【问题讨论】:

【参考方案1】:

因为它是您在代码中使用格式掩码指定的内容:

'YYYY-MM-DD HH24:MI:SS'

请注意,它会从 2015 中删除 15

所以当你说: '23/07/2015` 并使用 'YYYY-MM-DD' 的掩码时,它会强制这样做:

23 --> YYYY = 0023 等等

所以要解决,重新排列文字日期以适应 YYYY-MM-DD 的掩码(留作练习让您学习它:-)

SQL Format Models

【讨论】:

【参考方案2】:

我想将“Start_date”和“End_date”转换为不同的格式

您误解了date(或timestamp)列的工作原理:

DATE 列没有“格式

您在选择数据时看到的任何格式都由您使用的 SQL 客户端应用。

如果您想以不同的格式查看日期值,只需在选择它们时这样做:

select to_char(start_date,'YYYY-MM-DD HH24:MI:SS') as start_date,
       to_char(end_date, ,'YYYY-MM-DD HH24:MI:SS') as end_date
from the_table;

如果您总是希望看到这种格式的日期,请更改 SQL 客户端的配置。

【讨论】:

以上是关于To_date 在 Year 通配符前返回 2 个零的主要内容,如果未能解决你的问题,请参考以下文章

Accounting Calendar template

返回该月的最后一天

to_date 一年不返回 4 位,只有 2

oracle中的to_date函数

Oracle中TO_DATE格式

Oracle TO_DATE() 函数格式化时间全