我正在使用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
答案 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
谢谢你们的帮助!