2013-12-03 3 views
1

Я не очень хорошо знаком с синтаксисом DB2 на всех, поэтому необходимо некоторое руководство, следующее мс код SQL, что я пытаюсь преобразовать в DB2 (версия 8.2.4) КодDB2 с меткой времени

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 

, без luck..I использовал другой формат, чтобы создать переменный, а также (CREATE ПЕРЕМЕННОГО), я гугл и нашел несколько ресурсов, но по некоторым причинам, в моем случае я не смог сделать то, что я пытаюсь сделать. е может пролить некоторый свет .. Спасибо

+0

не Define "не повезло". 'DATE' и' TIMESTAMP' - это разные типы данных, поэтому вы не можете назначить значение временной метки переменной даты. Во-первых, вам нужно объявить 'c_date' как' TIMESTAMP'. – mustaccio

+0

Я попробовал много вещей, чтобы назначить значение переменной, но не увенчался успехом. У меня нет моего тестового ПК под рукой, но если вы посмотрите на мой код MS SQL, вы можете указать, как я могу это достичь? – user1063108

+1

Если вы объясните, чего вы пытаетесь достичь, я могу что-то предложить. Как и сейчас, ваш код не имеет большого смысла, поскольку он отображает только метку времени. Я сомневаюсь, что это то, что вам нужно. – mustaccio

ответ

0

Я думаю, ваша проблема в том, что tiemstamps DB2 сильно отличается от MySql или Oracle временных меток

Вы можете использовать следующую 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!! 

или

TSCOL = TIMESTAMP(DATECOL,TIMECOL) 
+1

Микросекунды не требуются, на самом деле, особенно это DB2 8.2 – mustaccio

+0

Привет, Джеймс, я думаю, что по некоторым причинам мой вопрос не ясен, я хочу, чтобы назначить переменная date, например, я хочу следующую переменную DECLARE VARIABLE myDate varchar (50) Затем я хочу присвоить ему какое-то значение, которое возвращается из запроса, например set myDate = Выбрать xyz из таблицыAbc Я пробовал следующий синтаксис, а также выберите xyz в myDate из таблицыAbc Это то, с чем я борюсь, можете ли вы помочь мне понять, почему все, что я пытаюсь, я не могу присвоить значение переменной? – 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 
+0

Дополнительную информацию об этой старой и устаревшей версии DB2 см. В этом Инфоцентре: http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp. Текущая версия DB2 - 10,5 – AngocA

+0

. вашего запроса в переменной? Thats, где я застрял ..... спасибо ur qeury приносит мне ближе – user1063108

+0

Если вы пишете хранимую процедуру, то обязательно, вы можете назначить ее переменной. ('set myvar = cast ...'). Но вне хранимой процедуры вы не можете, потому что DB2 8.2 не допускает составной SQL. –

Смежные вопросы