2011-11-17 81 views
0

我有一个PostgreSQL数据库,并有一个脚本可以从旧的Sybase数据库中计算日期。我如何做同样的事情是PostgreSQL?isql DECLARE语句到psql

isql 

DBCOMMAND="eval isql -d $DATABASE -U user -P passwd " 

$DBCOMMAND <<MSG> $LOG_MEM_EXCEP 

DECLARE @PREVINTDATETIME DATETIME 

select @PREVINTDATETIME=(DATEADD(hh, -24, GETDATE())) 

DECLARE @CURDATE DATETIME 

select CURDATE=GETDATE() 

select XTIME, MESSAGE from EXCEPTION_ALERTS where (XTIME between @PREVINTDATETIME AND @CURDATE) 

exit MSG 

回答

1

基本上它燃烧到一个简单的SQL语句:

SELECT xtime, message 
FROM exception_alerts 
WHERE xtime BETWEEN now() - interval '1d' AND now(); 

..从过去的24小时内归还所有行的两列在表exception_alerts

你想使用sql或plpgsql函数吗?或者使用命令行界面psql从shell中调用它?你期待的确切形式是什么?包括列名?

+0

我从shell脚本调用它。我们用它在一个现在是PostgreSQL数据库的Sybase DB上运行。所以我试图转换为psql。 – Sharon

+0

我正在使用DBCOMMAND =“eval psql -d $ DATABASE”。并需要创建一些DATETIME类型变量的变量 - 因此它会计算-24小时 - 我希望这样做更有意义。我只想显示xtime和消息列,如果xtime列在两个计算时间之间 – Sharon

+0

我确实测试了您的简单SQL语句,并且它工作得很好,所以我会使用它 - 非常感谢您的帮助! – Sharon