well. a couple of comments.

1.  you didn't have to change the your hive variable to a date. in your
case year = flocr(XXXX/10000) and month=cast(XXXX % 100 as int)  just as i
mentioned in my first reply. :)  But given you did maybe that'll make
things easier for you down the road.

2. the 'into' construct in Oracle i believe is a server side variable - in
this case a scalar.  Hive does not have those so you're going to have to
refactor - not just translate - from PL/SQL to HiveQL.   Off the top of my
head - and people might cringe at this - i would investigate the
possibility of storing that min() value in a shell variable and then
reference that shell variable in another query.  eg. var=$(hive -e 'select
min(dt_jour)  from ...')  and then hive -e "your_next_query where
dt_jour=$var" . like i said though its kinda hacky so unless you can come
up with a server-side solution you might have to hold your nose and try it.


On Wed, Jul 3, 2013 at 2:26 AM, Nitin Pawar <nitinpawar...@gmail.com> wrote:

> instead of into we have as in hive
>
> so your query will be select min(dt_jour) as d_debut_semaine from table
> where col = value
> also remember this as is valid only till the query is being executed, it
> wont be preserved once query execution is over
>
>
> On Wed, Jul 3, 2013 at 2:30 PM, Jérôme Verdier <verdier.jerom...@gmail.com
> > wrote:
>
>> Hi,
>>
>> Thanks for your help.
>>
>> I resolve the problem by changing my variable in_co_an_mois into a normal
>> date format, and extract month and year by using apporopriate functions :
>> year() and month().
>>
>> But, i  have a new question :
>>
>> the PL/SQL script i have to translate in hive is written like this :
>>
>> SELECT min(dt_jour)
>>     INTO D_debut_semaine
>>     FROM ods.calendrier
>>     WHERE co_an_semaine = in_co_an_sem;
>>
>> I have to record a value in a variable (here : D_debut_semaine) to use
>> this later.
>>
>> Is there a way to do this in Hive ?
>>
>>
>>
>> 2013/7/3 Paul COURTOIS <p...@pole-conseils.com>
>>
>>> Hi jerome,
>>>
>>>
>>>
>>> What about the from_unixtime and unix_timestamp  Udf ?
>>>
>>>
>>>
>>>
>>>
>>> from_unixtime() which accept bigint
>>>
>>>
>>>
>>> my 2 cents
>>>
>>>
>>>
>>> Paul
>>>
>>>
>>>
>>> *De :* Nitin Pawar [mailto:nitinpawar...@gmail.com]
>>> *Envoyé :* mercredi 3 juillet 2013 09:29
>>> *À :* user@hive.apache.org
>>> *Objet :* Re: Dealing with differents date format
>>>
>>>
>>>
>>> easiest way in this kind would be write up a small udf.
>>>
>>> As Stephen suggested, its just a number so you can do maths to extract
>>> year and month out of the number and then do the comparison.
>>>
>>>
>>>
>>> also 201307 is not a supported date format anywhere as per my knowledge
>>>
>>>
>>>
>>> On Wed, Jul 3, 2013 at 12:55 PM, Jérôme Verdier <
>>> verdier.jerom...@gmail.com> wrote:
>>>
>>> Hi Stephen,
>>>
>>> Thanks for your reply.
>>>
>>>
>>>
>>> The problem is that my input date is this : in_co_an_mois (format :
>>> YYYYMM, integer), for example, this month, we have 201307
>>>
>>> and i have to deal with this date : add one month, compare to over date,
>>> etc...
>>>
>>> The problem is that apparently, there is no way to do this, because Hive
>>> can't deal with this type of data because it's not a date format.
>>>
>>> For hive, this is just a number.
>>>
>>> Hive can deal with this : 1970-01-01 00:00:00, or this : 2009-03-20, but
>>> not with this unusual format : 201307.
>>>
>>> Thanks.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> 2013/7/2 Stephen Sprague <sprag...@gmail.com>
>>>
>>> not sure i fully understand your dilemma.    have you investigated any
>>> of the date functions listed here?
>>>
>>>
>>> https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-DateFunctions
>>>
>>> seems to me you could pull the year and month from a date.  or if you
>>> have an int then do some arithmetic to get the year and month.  eg. year =
>>> floor( <your int>/10000) and month = cast( <your int> % 100 as int)  [% ==
>>> modulus operator]
>>>
>>> or am i not even answering your question?
>>>
>>>
>>>
>>>
>>>
>>> On Tue, Jul 2, 2013 at 2:42 AM, Jérôme Verdier <
>>> verdier.jerom...@gmail.com> wrote:
>>>
>>> Hi,
>>>
>>> i trying to translate some PL/SQL script in HiveQL, and dealing with
>>> unusual date format.
>>>
>>> i added a variable in my hive script : '${hiveconf:in_co_an_mois}' which
>>> is a year/month date format, like this : 201307 (INT format).
>>>
>>> I would like to transform this in date format, because i have to
>>> increment this (add one month/one year).
>>>
>>> Is there a way to do this in hive ?
>>>
>>> Thanks.
>>>
>>>
>>>
>>>
>>> --
>>> *Jérôme*
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> --
>>> Nitin Pawar
>>>
>>
>>
>>
>> --
>> *Jérôme VERDIER*
>> 06.72.19.17.31
>> verdier.jerom...@gmail.com
>>
>>
>
>
> --
> Nitin Pawar
>

Reply via email to