Pregunta

Necesito enviar una cláusula WHERE de comparación de fecha con el formato correcto a un programa en la línea de comandos en bash.

Una vez que se encuentre dentro del programa llamado, la cláusula WHERE debería ser válida para Oracle y debería ser exactamente como esta:

highwater>TO_DATE('11-Sep-2009', 'DD-MON-YYYY')

El valor de la fecha está en una variable. He probado una variedad de combinaciones de citas y barras invertidas. En lugar de confundir el problema y dar ejemplos de mis errores, espero una respuesta prístina e impecable por Dreck.

Si tuviera que escribirlo en Perl, creo que la tarea tendría este aspecto:

$hiwaterval = '11-Sep-2009';
$where = "highwater>TO_DATE(\'$hiwaterval\', \'DD-MON-YYYY\')";

¿Cómo puedo lograr el mismo efecto en bash?

¿Fue útil?

Solución

hiwaterval='11-Sep-2009'

where="highwater > TO_DATE('$hiwaterval', 'DD-MON-YYYY')"

opcionalmente agregar " exportar " antes de la configuración de la variable final, si va a ser visible en el lado del shell actual.

Otros consejos

¿Has intentado usar el uso de dobles tics? Al igual que Highwater > TO_DATE ('' 11-Sep-2009 '', 'DD-MON-YYYY' '). Sólo una sugerencia. No lo he probado.

Puedes asignar la cláusula where de esta manera:

export WHERECLAUSE=`echo "where highwater >TO_DATE('11-Sep-2009', 'DD-MON-YYYY')"`

(con backticks alrededor de la declaración de eco, no aparecen en mi editor aquí ...)

que funciona con un script de shell de la forma:

sqlplus /nolog <<EOS
connect $USERNAME/$PASSWD@$DB
select * from test $WHERECLAUSE
;
exit
EOS
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top