文章目录


第三十五章 SQL函数 CURRENT_DATE

日期/时间函数,返回当前本地日期。

大纲

CURRENT_DATE

描述

​CURRENT_DATE​​​不带任何参数。它将当前本地日期作为数据类型​​DATE​​​返回。不允许使用参数括号。​​CURRENT_DATE​​返回此时区的当前本地日期;它根据本地时间变量(如夏令时)进行调整。

在逻辑模式下​​CURRENT_DATE​​以​​$HOROLOG​​格式返回当前本地日期;

例如,​​64701​​。

显示模式下的​​CURRENT_DATE​​以区域设置的默认格式返回当前本地日期。

例如,在美国的区域设置为​​02/22/2018​​,在欧洲的区域设置为​​22/02/2018​​,在俄罗斯的区域设置为​​22.02.2018​​。

要指定不同的日期格式,请使用​​TO_DATE​​​函数。要更改默认日期格式,请将​​SET OPTION​​​命令与​​DATE_FORMAT​​​、​​Year_OPTION​​​或​​DATE_SEFACTOR​​选项配合使用。

要仅返回当前日期,请使用​​CURRENT_DATE​​​或​​CURDATE​​​。这些函数以​​DATE​​​数据类型返回它们的值。​​CURRENT_TIMESTAMP​​​、​​GETDATE​​​和​​NOW​​​函数也可用于将当前日期和时间作为​​TIMESTAMP​​数据类型返回。

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

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

​CURRENT_DATE​​​可以用作​​CREATE TABLE​​​或​​ALTER TABLE​​中的默认规范关键字。

示例

下面的示例返回转换为显示模式的当前日期:

SELECT CURRENT_DATE AS Today

2022/1/24 0:00:00

下面的嵌入式SQL示例返回存储的当前日期。由于此日期以​​$HOROLOG​​格式存储,因此将以整数形式返回:

&sql(SELECT CURRENT_DATE INTO :a)
IF SQLCODE'=0 {
WRITE !,"Error code ",SQLCODE }
ELSE {
WRITE !,"Current date is: ",a }
DHC-APP>d ##class(PHA.TEST.SQLCommand).CurrentDate()

Current date is: 66133
DHC-APP>

以下示例显示如何在​​WHERE​​​子句中使用​​CURRENT_DATE​​​返回最近​​1000​​天内出生的人的记录:

SELECT Name,DOB,Age
FROM Sample.Person
WHERE DOB > CURRENT_DATE - 1000