1

我需要将格式正确的日期比较 WHERE 子句发送到 bash 命令行上的程序。

一旦它进入被调用的程序,WHERE 子句应该对 Oracle 有效,并且应该看起来完全像这样:

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

日期值在变量中。我尝试了各种引号和反斜杠的组合。与其混淆这个问题并举例说明我的错误,我希望得到一个不受污染的原始准确答案。

如果我用 Perl 编写它,我认为作业应该是这样的:

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

如何在 bash 中达到相同的效果?

4

3 回答 3

3
hiwaterval='11-Sep-2009'

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

如果要在当前 shell 中可见,则可选择在最终变量设置之前添加“export”。

于 2009-09-11T15:40:05.703 回答
0

您是否尝试过使用双刻度?像 highwater>TO_DATE(''11-Sep-2009'', ''DD-MON-YYYY'')。只是一个建议。我还没试过。

于 2009-09-11T15:39:08.200 回答
0

您可以像这样分配 where 子句:

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

(回声语句周围有反引号 - 它们没有出现在我的编辑器中......)

它适用于以下形式的 shell 脚本:

sqlplus /nolog <<EOS
connect $USERNAME/$PASSWD@$DB
select * from test $WHERECLAUSE
;
exit
EOS
于 2009-09-11T16:03:12.217 回答