NEXT_DAY 函数返回晚于它的第一个 DATE 或 DATETIME 参数的最早的日期,并落在它的第二个参数指定的星期几上。第二个参数是三个 ASCII 字符的加引号的字符串,是星期几的英文名称缩写。
星期 | 缩写 | 星期 | 缩写 | |
---|---|---|---|---|
星期日 | 'SUN' | 星期三 | 'WED' | |
星期一 | 'MON' | 星期四 | 'THU' | |
星期二 | 'TUE' | 星期五 | 'FRI' | |
星期六 | 'SAT' |
忽略跟在这些缩写字符串的第三个字符之后的任何字符。例如,对于第二个参数,'MONDAY' 和 'MONTAG' 都是有效的规范,每一都指定在第一个参数的日期之后的星期一。然而,如果第二个字符串的前三个字符不与上表中星期缩写之一相匹配,比如 'MODNAY', 则 GBase 8s 发出错误。
SELECT ship_date, NEXT_DAY(ship_date, 'SAT') AS next_saturday, NEXT_DAY(ship_date, 'SAT') - ship_date AS num_days FROM orders;
ship_date next_saturday num_days 06/01/2006 06/03/2006 2 02/12/2007 02/17/2007 5 05/31/2007 06/02/2007 2 05/23/2007 05/26/2007 3
由 NEXT_DAY 返回的值与第一个参数有相同的数据类型。如果此参数为 DATE 类型,则 NEXT_DAY 返回 DATE 值。如果第一个参数为 DATETIME 类型,则 NEXT_DAY 返回 DATETIME YEAR TO FRACTION(5) 值。
由于在前面示例中的 ship_date 是 DATE 列,所以返回的日期格式化为 DATE 值,而不是 DATETIME 格式。
sprintf(query, ", "select next_day(?::date, 'SUN') from mytab"); EXEC SQL prepare selectq from :query; EXEC SQL declare select_cursor cursor for selectq; EXEC SQL open select_cursor using :hostvar_date_input; EXEC SQL fetch select_cursor into :var_date_output;