Sap 2014年在董事会工作中转换为1914年
目前的安排是: SAP DSO:包含dd mm yyyy格式的数据列 BODS作业从DSO获取数据并加载到登录表。 Teradata中对应的日期列为dd-mm-yy 将日期加载到teradata时,2014年将转换为1914年。 不涉及任何转换。源和目标之间的直接映射Sap 2014年在董事会工作中转换为1914年,sap,etl,teradata,sap-data-services,Sap,Etl,Teradata,Sap Data Services,目前的安排是: SAP DSO:包含dd mm yyyy格式的数据列 BODS作业从DSO获取数据并加载到登录表。 Teradata中对应的日期列为dd-mm-yy 将日期加载到teradata时,2014年将转换为1914年。 不涉及任何转换。源和目标之间的直接映射 这个问题几个月前才开始出现。不确定要检查什么。DBSControl for CenturyBreak指定哪些两位数年份被解释为20世纪,哪些被解释为21世纪。如果您的系统将其配置为非零值(默认值),那么这很可能就是您看到数据行为的
这个问题几个月前才开始出现。不确定要检查什么。DBSControl for CenturyBreak指定哪些两位数年份被解释为20世纪,哪些被解释为21世纪。如果您的系统将其配置为非零值(默认值),那么这很可能就是您看到数据行为的原因 CenturyBreak不影响以数字形式输入的四位数年份或日期 如果CenturyBreak=10,则诸如“00/01/01”和“09/01/01”之类的字符串将被解释为2000和2009。插入为“14/01/01”的字符串被解释为1914
请与DBA联系,确定CenturyBreak是否已设置为非零值,或将数据输入显式转换为数字日期值。要在日期中显示正确的年份,请使用日期时间格式
dd mm rrrrr
当日期存储在一个世纪中,但引用另一个世纪时,日期可能会显示错误的前缀。rrrr
year格式也是如此
如果指定的两位数年份为00到49,则
- 如果当前年份的最后两位数为00到49,则 返回的年份具有与当前年份相同的前两位数字
- 如果当前年份的最后两位数为50到99,则 返回年份的前2位数字比前2位数字大1 本年度的数字
- 如果当前年份的最后两位数为00到49,则 返回年份的前2位数字比前2位数字小1 本年度的
- 如果当前年份的最后两位数为50到99,则 返回的年份具有与当前年份相同的前两位数字
dd/mm/yyyyy
,并使用这种格式构建了一个世界之后,我在测试中注意到一些日期结果显示不正确,例如01/07/1993
显示为01/07/2093
。这是因为加载到表中的数据只有2位yy
数字,例如01/07/93
,而Oracle希望使用4位yyy
的日期时间格式
反过来,Oracle将年份格式强制为4位数字,但由于年份是在上个世纪(20世纪),但存储在21世纪,因此年份的前缀是错误的世纪
为了解决这个问题,我使用了rrrrr
DateTime格式。甲骨文对此有充分的解释,可以找到进一步的解释
当我重新创建日期时间格式为dd mm rrrrr
的表时,日期显示正确
我希望这有帮助