Q
DB2日期转换
0
A
回答
1
我不知道一个简单的因为你没有日期对象(即它不像你找到一个时间戳的月份),所以你可以使用case语句,但它会变得很长。
SELECT CASE Month
WHEN '1' THEN 'January'
WHEN '2' THEN 'February'
WHEN '3' THEN 'March'
WHEN '4' THEN 'April'
...
END+'-'+Year
FROM TABLE
1
我想这会做到这一点:
SELECT
MONTHNAME(
DATE(CAST(Year AS CHAR(4)) || '-' || TRIM(CAST(Month AS CHAR(2))) || '-1')
) || '-' || CAST(Year AS CHAR(4))
FROM TABLE
1
这应该做的伎俩,假设列Month
和Year
是整数,一个月域1-12:
select substring('---JanFebMarAprMayJunJulAugSepOctNovDec', 3*Month , 3)
+ '-'
+ right(digits(Year),4)
from some_table
如果Month
为0,你会得到'---'作为月;如果它小于0或大于12,你会得到某种恶作剧。
0
你可以创建一个函数来的月份值,这样的转换...
CREATE FUNCTION INT2MONTH (MONTH INTEGER)
RETURNS VARCHAR(100)
LANGUAGE SQL
CONTAINS SQL
NO EXTERNAL ACTION
DETERMINISTIC
RETURN MONTHNAME('2000-' || RIGHT('0' || STRIP(CHAR(MONTH)), 2) || '-01')
然后你可以...
select int2month(month) || '-' || strip(char(year)) from test
1
--------------------------------------------------
May-2011
June-2011
December-2012
如果你想有一个3字符月再改最后最后的功能...
RETURN LEFT(MONTHNAME('2000-' || RIGHT('0' || STRIP(CHAR(MONTH)), 2) || '-01'), 3)
0
我意识到这个问题是相当古老的,但有一种方法比简单得多这里列出的任何选项(在我看来) - 一些日期数学和VARCHAR_FORMAR()
函数的组合:
SELECT
VARCHAR_FORMAT(
DATE('0001-01-01') + (month_col - 1) MONTH + (year_col - 1) YEAR
,'Month-YYYY'
)
FROM your_table
相关问题
- 1. DB2:将日期值转换为varchar
- 2. DB2从YYYYMMDD转换为日期
- 3. 将Julian日期转换为IBM DB2 iSeries的Node.js中的正常日期
- 4. 日期转换
- 5. 日期转换
- 6. 日期转换
- 7. 日期转换
- 8. 转换日期
- 9. 日期转换
- 10. 将字符串转换为DB2中的日期
- 11. 将CYYMMDD转换为SAS DB2中的日期通过SAS
- 12. 将IBM iSeries DB2小数日期类型转换为DateTime对象
- 13. NHibernate QueryOver转换错误在DB2日期类型
- 14. DB2日期格式
- 15. DB2转换行
- 16. PHP日期转换
- 17. Javascript:日期转换
- 18. PHP日期转换
- 19. SAS日期转换
- 20. JS日期转换
- 21. C#转换日期
- 22. 转换UTC日期
- 23. TSQL日期转换
- 24. 转换ldap日期
- 25. JAVA日期转换
- 26. Oracle日期转换
- 27. 日期转换jsp
- 28. 转换日期(c#)
- 29. Java日期转换
- 30. XSL转换日期