我有一个源应用程序,它使用varchar类型来存储日期。所有的日期应该是yyyymmdd形式。
现在,当我运行此查询时
select (case when PLE_DATE = '00000000' then null else to_date(PLE_DATE,'yyyymmdd') end) PLE_DATE
from PLE_DATE_TAB
我能够很好地看到来自sqldeveloper的数据。但是,当我试图将此数据插入另一个目标为日期列的表中时。投掷错误日期必须在月份的第1天和最后一天之间。我正在努力解决这个问题 。任何帮助深表感谢。源表和目标表都在oracle db中。
答案 0 :(得分:1)
写一个函数
var airports = ["DXB" : "dubai international airport", "LHR" : "heathrow international airport"]
for (airportCode, airportName) in airports
{
airports[airportCode] = airportName.capitalized
}
然后在您的选择中使用它。
var accent = new AccentPolicy()
{
AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND,
AccentFlags = 0x20 | 0x40 | 0x80 | 0x100,
};
答案 1 :(得分:0)
现在让我们假设数据确实是'yyyymmdd'
格式的。 (您可以编写一个简单的查询来选择此日期字符串不是八个字符的所有行,或者包含非数字,但这些可能性会导致不同的错误消息,而不是您获得的错误消息。)
检查"错误日期"你可以这样做:
select ple_date from ple_date_tab
where to_number(substr(ple_date, 7, 2)) = 31
and to_number(substr(ple_date, 5, 2)) in (2, 4, 6, 9, 11)
;
你可以写一些类似的东西来查找2月29日的所有日期并查看年份以确保它是闰年。或者也许在任何一个月中寻找等于00而不是01或更高,或者大于31的日子(那时WHERE条件的第二部分将不再需要)。
如果这没有帮助,我们可以考虑其他事情,但这是我先检查的内容(根据您收到的错误消息)。