我是第一次使用DB2数据库.
我正在尝试使用DB2日期,但数据作为字符串存储在DB2数据库中.
我想将这个日期字符串转换为实际日期,最好是下降时间因为我想要2011年1月1日到2011年1月26日之间的所有交易.
基本上,我想在DB2魔术中使用这个MS SQL语句......
CONVERT(datetime,SETTLEMENTDATE.VALUE,103)
Run Code Online (Sandbox Code Playgroud)
对于背景,我已经到了
CAST(SETTLEMENTDATE.VALUE, DATE)
Run Code Online (Sandbox Code Playgroud)
和
DATE(SETTLEMENTDATE.VALUE)
Run Code Online (Sandbox Code Playgroud)
但我需要DB2 whizzkid的专业知识!
谢谢
Ian*_*vde 21
根据您自己的答案,我猜您的列的数据格式如下:
'DD/MM/YYYY HH:MI:SS'
Run Code Online (Sandbox Code Playgroud)
日/月/年之间的实际分隔符无关紧要,也不会在年后发生任何事情.
您没有说明您正在使用的DB2版本或正在运行的平台,因此我将假设它在Linux,UNIX或Windows上.
几乎任何最新版本的DB2 for Linux/UNIX/Windows(8.2或更高版本,甚至可能是旧版本),都可以使用以下TRANSLATE函数执行此操作:
select
date(translate('GHIJ-DE-AB',column_with_date,'ABCDEFGHIJ'))
from
yourtable
Run Code Online (Sandbox Code Playgroud)
使用此解决方案,您的专栏中的日期之后的内容无关紧要.
在DB2 9.7中,您还可以使用该TO_DATE函数(类似于Oracle的TO_DATE):
date(to_date(column_with_date,'DD-MM-YYYY HH:MI:SS'))
Run Code Online (Sandbox Code Playgroud)
这要求您的数据与格式字符串匹配; 在查看它时更容易理解,但不像TRANSLATE选项那样灵活.
我知道它的旧帖子,但我仍然想要贡献
如果你有这样的数据格式,上面将无法工作
'YYYMMDD'
例如:
Dt
20151104
Run Code Online (Sandbox Code Playgroud)
所以我试着跟随以获得理想的结果.
select cast(Left('20151104', 4)||'-'||substring('20151104',5,2)||'-'||substring('20151104', 7,2) as date) from SYSIBM.SYSDUMMY1;
Run Code Online (Sandbox Code Playgroud)
此外,如果要将查询从MS SQL链接服务器运行到DB2(仅显示100行).
SELECT top 100 * from OPENQUERY([Linked_Server_Name],
'select cast(Left(''20151104'', 4)||''-''||substring(''20151104'',5,2)||''-''||substring(''20151104'', 7,2) as date) AS Dt
FROM SYSIBM.SYSDUMMY1')
Run Code Online (Sandbox Code Playgroud)
上述查询后的结果:
Dt
2015-11-04
Run Code Online (Sandbox Code Playgroud)
希望这对其他人有帮助.
| 归档时间: |
|
| 查看次数: |
152878 次 |
| 最近记录: |