DB2变量与时间戳

3

我对DB2语法不是很熟悉,需要一些指导。下面是我试图将MS SQL代码转换成DB2(版本8.2.4)代码。

declare @d datetime, @mydate varchar(16)
set @d = GETDATE()
--create formatted datetime[yyyyMMdd-hhmmss]
set @mydate = convert(varchar,@d,112)+'-  '+convert(varchar,datepart(hh,@d))+convert(varchar,datepart(mi,@d))+convert(varchar,datepart(ss,@d))
select @mydate as MyDate

然而,我完全没有成功的运气。我已经尝试过以下语法来分配变量:
DECLARE c_date Date;
SELECT CURRENT_TIMESTAMP INTO c_date FROM SYSIBM.SYSDUMMY1

我尝试了其他格式来创建变量(使用CREATE VARIABLE),但是没有成功。我在谷歌上搜索并找到一些资源,但是由于某些原因,在我的情况下我无法完成我想要做的事情。希望有人可以为我提供帮助。


定义“没有运气”。DATETIMESTAMP是不同的数据类型,因此您不能将时间戳值分配给日期变量。首先,您需要将c_date声明为TIMESTAMP - mustaccio
我尝试了很多方法来给变量赋值,但都没有成功。我手头没有测试电脑,但如果您查看我的 MS SQL 代码,能否指导我如何实现? - user1063108
1
如果你能解释一下你想要实现什么,我或许可以给你一些建议。目前来看,你的代码只显示了一个时间戳,没有太多意义。我怀疑这不是你想要的结果。 - mustaccio
我认为我想要的是以某种方式完全复制我上面发布的MS SQL代码,但我无法在DB2中实现这一点。一旦我在变量中拥有正确的日期值,就会出现另一个功能。请查看SQL代码并帮助我使用DB2复制该代码。谢谢。 - user1063108
2个回答

0

我认为你的问题在于DB2时间戳与MySql或Oracle时间戳非常不同

您可以使用以下语法来分配时间戳

TSCOL = '2014-12-31-23:59:59.123456'  -- notice microseconds are required !!
TSCOL = '2014-12-31 23:59:59.123456'  -- for newer versions of DB2 with ISO dateformat set!!

或者

TSCOL = TIMESTAMP(DATECOL,TIMECOL)

1
微秒实际上并不是必需的,特别是在DB2 8.2中。 - mustaccio
嗨,詹姆斯,我认为由于某些原因我的问题不够清晰。我想要的是给一个变量分配一个日期,例如说我想要以下变量: DECLARE VARIABLE myDate varchar(50) 然后我想要将一些值赋给它,这些值是从查询返回的,例如 set myDate = Select xyz from tableAbc 我也尝试了以下语法 select xyz into myDate from tableAbc这就是我正在努力解决的问题,你能帮助我理解为什么无论我尝试什么都似乎无法给变量赋值吗? - user1063108

0

看起来你正在尝试获取当前时间戳,但以特定的方式格式化。由于DB2 8.2没有有用的TIMESTAMP_FORMAT函数,因此你可以使用以下方法:

select 
    cast(int(current date) as char(8)) || '-' || cast(int(current time) as char(6)) as mydate 
from 
    sysibm.sysdummy1

这会返回:

MYDATE              
---------------
20131203-234912

有关旧版且已弃用的DB2版本的更多信息,请查看此InfoCenter:http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp。当前的DB2版本是10.5。 - AngocA
你能把查询结果放在一个变量里吗?这就是我卡住的地方了……谢谢,你的查询让我更接近目标。 - user1063108
如果您正在编写存储过程,那么当然可以将其分配给一个变量(set myvar = cast...)。但是在存储过程之外,您不能这样做,因为DB2 8.2不允许复合SQL。 - Ian Bjorhovde

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接