SQL日期格式从1YYMMDD到正常

时间:2017-08-12 18:44:01

标签: sql date format db2

我正在使用SQL for IBM System i Access for Windows Version 6 Release 1从AS400中提取绿屏数据。我认为那将是DB2?

日期数据的格式为1yymmdd,例如,对于2016年10月15日,日期将是1161015.我希望将日期数据从1yymmdd格式转换为MM / DD / YYYY并被识别为日期而不是一个号码。

部分问题是,如果我想检查两个条目之间的日期差异,它会将其识别为一个数字(例如1171015-1161016 = 10,000),但我希望它是365天。

使用此日期格式(1yymmdd)的好转换方法是什么(MM / DD / YYYY)?

我正在使用的代码示例:

sSQL = SELECT A.DATE, curdate() 
            FROM TABLE1 A 
            LIMIT 10

输出如下

1141220 8/16/2017
1130308 8/16/2017
1141220 8/16/2017
1141220 8/16/2017
1140822 8/16/2017
1140822 8/16/2017
1141206 8/16/2017
1141220 8/16/2017
1140913 8/16/2017
1141206 8/16/2017

2 个答案:

答案 0 :(得分:0)

您可以使用DATENAME功能获取月份名称。要获得日期和年份,只需使用CAST

即可

SELECT DATENAME(MM, GETDATE()) AS [DD Month] + ' ' + CAST(DAY(GETDATE()) AS VARCHAR(2)) + ' ' + CAST(YEAR(GETDATE()) AS VARCHAR(4)) AS [DD Month YYYY]

您还可以查看SQL-SERVER-helper页面

中提供的其他格式

答案 1 :(得分:0)

我能够弄清楚如何正确编码(E.G. A.DATE = 1161015)

SELECT DATE( TIMESTAMP( (A.DATE + 19000000) CONCAT'000000') ) 
FROM TABLE1 A 

答案:

10/15/2016

如果你想找到天数的差异(E.G. A.DATE1 = 1161015,A.DATE2 = 1161215):

SELECT  ( DAYS( DATE(TIMESTAMP((A.DATE2 + 19000000) CONCAT'000000'))) - DAYS(DATE(STANMP((A.DATE1+ 19000000) CONCAT'000000'))) )
FROM TABLE1 A 

答案:

58

谢谢你们的帮助!