第九十五章 SQL函数 MINUTE
第九十五章 SQL函数 MINUTE
返回日期时间表达式的分钟的时间函数。
大纲
{fn MINUTE(time-expression)}
参数
- time-expression- 作为列名、另一个标量函数的结果或字符串或数字文字的表达式。它必须解析为日期时间字符串或时间整数,其中基础数据类型可以表示为- %Time、- %TimeStamp或- %PosixTime。
描述
MINUTE 返回一个整数,指定给定时间或日期时间值的分钟数。为 $HOROLOG 或 $ZTIMESTAMP 值、ODBC 格式日期字符串或时间戳计算分钟。
时间表达式时间戳可以是数据类型 %Library.PosixTime(编码的 64 位有符号整数),也可以是数据类型 %Library.TimeStamp (yyyy-mm-dd hh:mm:ss.fff)。
要更改默认时间格式,请使用 SET OPTION 命令。
请注意,可以提供时间整数(经过的秒数),但不能提供时间字符串 (hh:mm:ss)。必须提供日期时间字符串 (yyyy-mm-dd hh:mm:ss)。
日期时间字符串的时间部分必须是有效时间。否则,将生成 SQLCODE -400 错误 <ILLEGAL VALUE> 。分钟 (mm) 部分必须是 0 到 59范围内的整数。前导零在输入时是可选的;前导零在输出上被抑制。可以省略日期时间字符串的秒 (:ss) 部分,但仍返回分钟部分。
日期时间字符串的日期部分未经过验证。
当分钟部分为“0”或“00”时,MINUTE 返回零分钟。如果没有提供时间表达式,或者完全省略时间表达式的分钟部分('hh', 'hh:', 'hh::', or 'hh::ss'),也会返回零分钟。
可以使用 DATEPART 或 DATENAME 返回相同的时间信息。
也可以使用 MINUTE() 方法调用从 ObjectScript 调用此函数:
$SYSTEM.SQL.Functions.MINUTE(time-expression)
示例
以下示例都返回数字 45,因为它是 datetime 字符串中时间表达式的第 45 分钟:
SELECT {fn MINUTE('2018-02-16 18:45:38')} AS ODBCMinutes
45
SELECT {fn MINUTE(67538)} AS HorologMinutes
45
以下示例也返回 45。如此处所示,时间值的秒部分可以省略:
SELECT {fn MINUTE('2018-02-16 18:45')} AS Minutes_Given
45
以下示例返回 0 分钟,因为日期时间字符串中省略了时间表达式:
SELECT {fn MINUTE('2018-02-16')} AS Minutes_Given
0
以下示例均返回当前时间的分钟部分:
SELECT {fn MINUTE(CURRENT_TIME)} AS Min_CurrentT,
       {fn MINUTE({fn CURTIME()})} AS Min_CurT,
       {fn MINUTE({fn NOW()})} AS Min_Now,
       {fn MINUTE($HOROLOG)} AS Min_Horolog,
       {fn MINUTE($ZTIMESTAMP)} AS Min_ZTS
27  27  27  27  27
以下示例显示前导零被抑制。第一个 MINUTE 函数返回长度为 2,其他函数返回长度为 1。省略的时间被认为是 0 分钟,其长度为 1:
SELECT LENGTH({fn MINUTE('2018-02-22 11:45:00')}),
       LENGTH({fn MINUTE('2018-02-22 03:05:00')}),
       LENGTH({fn MINUTE('2018-02-22 3:5:0')}),
       LENGTH({fn MINUTE('2018-02-22')})
2   1   1   1
以下嵌入式 SQL 示例显示 MINUTE 函数识别为区域设置指定的 TimeSeparator 字符:
/// d ##class(PHA.TEST.SQLFunction).Minute()
ClassMethod Minute()
{
    d ##class(%SYS.NLS.Format).SetFormatItem("TimeSeparator", ".")
    &sql(
        SELECT {fn MINUTE('2018-02-22 18.45.38')}
            INTO :a)
    w "minutes=",a
}
DHC-APP>d ##class(PHA.TEST.SQLFunction).Minute()
minutes=45