文章
· 一月 25, 2022 阅读大约需 2 分钟

第三十四章 SQL函数 CURDATE

第三十四章 SQL函数 CURDATE

返回当前本地日期的标量日期/时间函数。

大纲

{fn CURDATE()}
{fn CURDATE}

描述

CURDATE不接受任何参数。它将当前本地日期作为数据类型DATE返回。请注意,参数括号是可选的。CURDATE返回此时区的当前本地日期;它根据本地时间变量(如夏令时)进行调整。

逻辑模式下的CURDATE$HOROLOG格式返回当前本地日期;
例如,64701
显示模式下的CURDATE以区域设置的默认格式返回当前本地日期。
例如,在美国的区域设置为02/22/2018,在欧洲的区域设置为22/02/2018,在俄罗斯的区域设置为22.02.2018

要指定不同的日期格式,请使用TO_DATE函数。
要更改默认的日期格式,使用SET OPTION命令和DATE_FORMATYEAR_OPTIONDATE_SEPARATOR选项。

要只返回当前日期,请使用CURDATECURRENT_DATE
这些函数返回DATE数据类型的值。
CURRENT_TIMESTAMPGETDATENOW函数也可以作为TIMESTAMP数据类型返回当前日期和时间。

请注意,除了GETUTCDATE之外,所有 SQL时间和日期函数都特定于当地时区设置。
要获得通用的(独立于时区的)当前时间戳,你可以使用GETUTCDATE或ObjectScript $ZTIMESTAMP特殊变量。

在使用嵌入式SQL时,这些数据类型的性能不同。
DATE数据类型将值存储为$HOROLOG格式的整数;
当在SQL中显示时,它们被转换为日期显示格式;
当从嵌入式SQL返回时,它们作为整数返回。
TIMESTAMP数据类型以相同的格式存储和显示其值。
可以使用CONVERT函数来更改日期和时间的数据类型。

示例

下面的例子都返回当前日期:

SELECT {fn CURDATE()} AS Today

2022/1/24 0:00:00
SELECT {fn CURDATE} AS Today

2022/1/24 0:00:00

下面的嵌入式SQL示例返回当前日期。
因为这个日期是以$HOROLOG格式存储的,所以它被返回为一个整数:

  &sql(SELECT {fn CURDATE()} INTO :a)
  WRITE !,"Current date is: ",a
DHC-APP>d ##class(PHA.TEST.SQLCommand).CurDate()

Current date is: 66133

下面的例子展示了如何在SELECT语句中使用CURDATE返回所有发货日期相同或晚于今天日期的记录:

SELECT * FROM Orders 
     WHERE ShipDate >= {fn CURDATE()}
讨论 (0)1
登录或注册以继续