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

时间:2015-07-24 04:13:23

标签: sql oracle

我想将'Start_date'和'End_date'转换为不同的格式(YYYY-MM-DD HH24:MI:SS),这与其他格式(DD / MM / YYYY HH24:MM)不同。

当我运行以下命令时:

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原始日期外卡,然后将其与野外合并你要把它变成卡片。

2 个答案:

答案 0 :(得分:1)

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

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

请注意,它会从15

中取消2015

所以,当你说:'23 / 07 / 2015`并使用'YYYY-MM-DD'的面具时,会强制它如此:

23 - > YYYY = 0023

所以要解决,重新安排文字日期以适应YYYY-MM-DD的面具(离开那个作为练习让你学习它: - )

SQL Format Models

答案 1 :(得分:0)

  

我想要转换' 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客户端的配置。