PL/SQL 日期插入

Posted

技术标签:

【中文标题】PL/SQL 日期插入【英文标题】:PL/SQL Date Insert 【发布时间】:2012-10-15 12:14:50 【问题描述】:

我正在以“dd/mm/yyyy”格式触发插入查询,但它将日期存储为 MM/DD/YYYY 格式。 我只想知道为什么会这样?

这是我正在使用的插入查询。

insert into txnblackout(endtime,idtxn,blackoutflag,starttime,startdate,typeuser,id_entity,idsequence,idapp,enddate) values('83520','LGN','D','7920',TO_DATE('30/12/2012','dd/mm/yyyy'),'ECU','B001','4','A1',TO_DATE('30/12/2012','dd/mm/yyyy'))

【问题讨论】:

【参考方案1】:

如果您不想更改 Windows 日期格式(按照 Colin 't Hart 的建议),您可以

在查询中使用明确的 to_char() 日期格式(由 Robert Hanson 建议) 设置您的客户端 NLS 设置 配置您的客户端(因为您似乎正在使用 PL/SQL 开发人员): 工具 -> 首选项 -> NLS 选项 -> 日期 -> 检查用户定义 + 输入您的格式

就我个人而言,我会设置客户端 NLS 设置。

【讨论】:

【参考方案2】:

这是一个前端问题:它以该格式显示日期。因为它们是日期字段,所以日期确实代表了您插入的日期。

我注意到屏幕截图右下角的日期以 MM/DD/YYYY 的顺序显示。在 Windows 中更改此设置,它很可能会在您的前端工具中正确显示。

【讨论】:

【参考方案3】:

重要的一点可以通过您的插入来凸显,其中包括“TO_DATE('30/12/2012','dd/mm/yyyy')”。这会将字符串“30/12/2012”转换为特定于数据库的内部日期对象格式。您无法控制底层存储格式。但是,您可以控制的是,当您调用 select 时,如何使用日期格式化函数将内部日期对象转换回字符串。

select to_char(some_date, 'dd/mm/yyyy') my_date from some_table;

在您引用的可视化界面中,它只是显示默认日期到字符串的转换。

【讨论】:

以上是关于PL/SQL 日期插入的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 过程语法

PL/SQL 触发器练习

使用 PL SQL 将数据插入到 oracle 表中仅包含一年中的“星期六”

(十六)PL/SQL日期及时间

PL/SQL 触发器以防止插入

PL/SQL:如何根据列值插入