在DB2中将字符串转换为日期

6yt4nkrj  于 2023-06-22  发布在  DB2
关注(0)|答案(6)|浏览(263)

我第一次使用DB2数据库。
我尝试使用DB2日期,但数据在DB2数据库中存储为字符串。
我想把这个日期字符串转换成一个实际的日期,最好是下降时间,因为我希望所有的交易在2011年1月1日和26日1月2011年。
所以,我想让DB2中的MS SQL语句变魔术……

CONVERT(datetime,SETTLEMENTDATE.VALUE,103)

作为背景资料,我已经了解到

CAST(SETTLEMENTDATE.VALUE, DATE)

DATE(SETTLEMENTDATE.VALUE)

但我需要DB2神童的专业知识!
谢谢

fjnneemd

fjnneemd1#

根据您自己的回答,我猜您的专栏中的数据格式如下:

'DD/MM/YYYY HH:MI:SS'

日/月/年之间的实际分隔符并不重要,年之后的任何分隔符也不重要。
您没有说您正在使用的DB2的哪个版本或者它运行在哪个平台上,所以我假设它运行在Linux、UNIX或Windows上。
几乎任何最新版本的DB2 for Linux/UNIX/Windows(8.2或更高版本,甚至可能是更早的版本),都可以使用TRANSLATE函数来完成此操作:

select 
   date(translate('GHIJ-DE-AB',column_with_date,'ABCDEFGHIJ'))
from
   yourtable

有了这个解决方案,列中的日期之后是什么并不重要。
在DB2 9.7中,还可以使用TO_DATE函数(类似于Oracle的TO_DATE):

date(to_date(column_with_date,'DD-MM-YYYY HH:MI:SS'))

这要求您的数据与格式化字符串匹配;它更容易理解,但不如翻译选项灵活。

li9yvcax

li9yvcax2#

我知道它的旧职位,但我仍然想贡献
如果你有这样的数据格式,上面的内容将不起作用
'YYYMMDD'
例如:

Dt
20151104

所以我试着跟随,以获得想要的结果。

select cast(Left('20151104', 4)||'-'||substring('20151104',5,2)||'-'||substring('20151104', 7,2) as date) from SYSIBM.SYSDUMMY1;

另外,如果您想运行从MSSQL链接服务器到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')

以上查询结果:

Dt
2015-11-04

希望这对其他人有帮助。

vof42yt1

vof42yt13#

在format函数中,你可以使用timestamp_format函数。例如,如果格式是YYYYMMDD,你可以这样做:

select TIMESTAMP_FORMAT(yourcolumnchar, 'YYYYMMDD') as YouTimeStamp 
from yourtable

然后你可以调整然后用元素格式化foundable here

ejk8hzay

ejk8hzay4#

好吧,看起来有点像黑客。我已经使用子字符串使它工作,这样,只有字符串中带有日期(而不是时间)的部分被传递到DATE函数中。

DATE(substr(SETTLEMENTDATE.VALUE,7,4)||'-'|| substr(SETTLEMENTDATE.VALUE,4,2)||'-'|| substr(SETTLEMENTDATE.VALUE,1,2))

我还是会接受任何比这个更好的答案!

4uqofj5v

4uqofj5v5#

注意,如果日期列是一个整数数据类型,如YYYYMMDD,而不是字符串(例如20230522),您需要使用以下内容:

SELECT

    DATE(TIMESTAMP_FORMAT(CHAR(your_int_date_column),'YYYYMMDD'))  AS "DatefromInteger"
ttp71kqs

ttp71kqs6#

您可以用途:

select VARCHAR_FORMAT(creationdate, 'MM/DD/YYYY') from table name

相关问题