PB从TOMMY选择TODAY()进入:var

时间:2018-10-08 16:21:06

标签: sql-server date format powerbuilder

当我在PB的SELECT中获得TODAY时,它返回1900/1/1

date var
Select TODAY() Into :var From DUMMY

但是当我分配给变量TODAY()时,它可以按预期工作

date var
var = today()

我使用MS SQL Server 2016和PowerBuilder 12.5。

我认为问题出在不同的日期格式中,但是我已经在Windows语言环境中更改了日期格式,即PB TODAY()返回 2018-10-08 和MSSQL GetDate()返回 2018-10-08 18:25:23.207 因此日期部分具有相同的格式。

由于我创建了MS SQL DUMMY表并在其中插入了1行,因此问题不在DUMMY表中。

我还想知道 SELECT TODAY() var = TODAY()是否有区别? 我想第一个变体返回MS SQL Server时间,而第二个变体返回本地时间。不是吗?

2 个答案:

答案 0 :(得分:1)

您提供了自己的答案:Today()是PowerScript函数,GetDate()是MS SQL上的函数。如果要执行SQL,则它必须是要针对其执行的服务器的有效SQL语句(INTO:var部分除外),并且不能包含PowerScript函数。

另外两件事:

  1. “ FROM DUMMY”是Oracle的东西,我很确定它不能在MS上使用。 (您是在执行SQL之后捕获错误代码的,对吗?)
  2. 我不会说这可能是一个关键问题,但是正如您所指出的,GetDate返回一个日期时间;建议您将其用作捕获变量的数据类型。

是的,GetDate()将是服务器的日期/时间,Today()将基于本地工作站。

祝你好运。

答案 1 :(得分:1)

尝试以下SQL。

  

Select getdate() into :var From DUMMY;