Whew, thanks everyone! I think wrapping quotes around that did it. Nicole, I was going to attempt that as a last resort. But the actual query is much longer and it would be extremely undesirable to do so.
Regards, Saurabh ---------------------------------------- > From: nicole.ge...@memorylane.com > To: user@hive.apache.org > Subject: Re: Passing date as hive configuration variable > Date: Thu, 10 May 2012 18:39:10 +0000 > > Another option is to do it all in the shell: > > #/bin/sh > somedate=$(date -d '2 day ago' +"%Y-%m-%d") > echo "$somedate" > script=" > select count(*) > from myschema.mytable > where local_dt > $somedate > " > echo "$script" > hive -e $script > output.dat > > > > On 5/10/12 11:34 AM, "Tucker, Matt" <matt.tuc...@disney.com> wrote: > > >You'll want to wrap ${hiveconf:ref_date} in quotes, so that's it's passed > >as a string in the query. > > > >SELECT "${hiveconf:ref_date}" FROM dummytable LIMIT 1; > > > >Matt Tucker > >Associate eBusiness Analyst > >Walt Disney Parks and Resorts Online > >Ph: 407-566-2545 > >Tie: 8-296-2545 > > > >CONFIDENTIAL > > > >-----Original Message----- > >From: Saurabh S [mailto:saurab...@live.com] > >Sent: Thursday, May 10, 2012 2:06 PM > >To: user@hive.apache.org > >Subject: Passing date as hive configuration variable > > > > > >I'm having a hard time passing a date as a hive environment variable. > > > >The setting is this: The table I'm querying is partitioned on a date > >column, say, local_dt. I wish to query on last two days' worth of data. > >Unfortunately there seems to be no way of getting the current date > >without either scanning the entire table on all local dates > >(current_timestamp()) or writing a custom UDF. So, I'm trying to pass it > >as a parameter within shell. > > > >Here is my test_query.sql: > > > > > >select count(*) > >from myschema.mytable > >where local_dt > ${hiveconf:ref_date} > >; > > > > > >and here is the driver shell script: > > > > > >#/bin/sh > >somedate=$(date -d '2 day ago' +"%Y-%m-%d") echo $somedate hive -hiveconf > >ref_date=$somedate -f test_query.sql > output.dat > > > > > >The problem is that Hive is performing subtractions in the date format. > >echo $somedate produces "2012-05-08" and "select ${hiveconf:ref_date} > >from dummytable limit 1" produces "1999". > > > >I noticed that there is an option to "set > >hive.variable.substitute=false;", but in that case, hive throws the > >following error: > >FAILED: Parse Error: line 3:7 cannot recognize input near '$' '{' > >'hiveconf' in select clause > > > >Regards, > >Saurabh > > > >P.S. I'm using this as reference: > >http://hive.apache.org/docs/r0.9.0/language_manual/var_substitution.html > > > > >