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 日期插入的主要内容,如果未能解决你的问题,请参考以下文章