Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 带时间戳的DB2变量_Sql_Db2 - Fatal编程技术网

Sql 带时间戳的DB2变量

Sql 带时间戳的DB2变量,sql,db2,Sql,Db2,我根本不熟悉DB2语法,所以需要一些指导,下面是我试图在DB2Version8.2.4代码中转换的ms sql代码 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(va

我根本不熟悉DB2语法,所以需要一些指导,下面是我试图在DB2Version8.2.4代码中转换的ms sql代码

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,我在谷歌上搜索并找到了很少的资源,但由于某些原因,在我的情况下,我无法完成我想做的事情..希望有人能给我一些启示。。
谢谢

我认为您的问题在于DB2 TiemStamp与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!!
您可以使用以下systax来分配时间戳

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!!


看起来您正在尝试获取当前时间戳,但以某种方式格式化。由于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

没有运气。日期和时间戳是不同的数据类型,因此不能将时间戳值分配给日期变量。首先,你需要将c_日期声明为时间戳。我尝试了很多事情来为变量赋值,但都没有成功。我手头没有测试电脑,但如果你看看我的MS SQL代码,你能告诉我如何实现它吗?如果你解释一下你试图实现的是什么,我可能会提出一些建议。现在,您的代码没有多大意义,因为它只显示一个时间戳。我怀疑这就是你所追求的。我想我所追求的是以某种方式完全复制我上面发布的MS SQL代码,而我在DB2中无法做到这一点。在变量中有正确的日期值后,会出现另一个功能。请看一看SQL代码,并帮助我使用DB2复制该代码。实际上,不需要秒数,尤其是DB2 8.2Hi James,我认为出于某些原因,我的问题不清楚,我想要的是给一个变量分配一个日期,比如说,我想要下面的变量声明变量myDate varchar50,然后我想要给它分配一个从查询返回的值,比如set myDate=Select xyz from tableAbc我尝试了下面的语法,也从tableAbc中选择xyz到myDate这就是我正在努力解决的问题,您能帮助我理解为什么无论我尝试什么,我似乎都不能为变量赋值吗?有关旧的和不推荐的DB2版本的更多信息,请查看此信息中心:当前DB2版本为10.5您可以将查询的输出放入变量中吗?这就是我被卡住的地方…谢谢你的qeury让我靠近了如果你正在写一个存储过程,那么当然,你可以把它赋给一个变量。设置myvar=cast。。。。但在存储过程之外,您不能这样做,因为DB28.2不允许复合SQL。