時刻、日付、および間隔を扱う関数
次の表に、ODBC スカラー関数セットに含まれる時刻関数と日付関数を示します。 アプリケーションは、SQL_TIMEDATE_FUNCTIONSの情報型でSQLGetInfoを呼び出すことによって、ドライバーでサポートされている時刻と日付の関数を決定できます。
timestamp_expとして示される引数には、列の名前、別のスカラー関数の結果、ODBC-time-escape、ODBC-date-escape、または ODBC-timestamp-escape を指定できます。基になるデータ型は、SQL_CHAR、SQL_VARCHAR、SQL_TYPE_TIME、SQL_TYPE_DATE、またはSQL_TYPE_TIMESTAMPとして表すことができます。
date_expとして示される引数には、列の名前、別のスカラー関数の結果、または ODBC-date- escape または ODBC-timestamp-escape を指定できます。基になるデータ型は、SQL_CHAR、SQL_VARCHAR、SQL_TYPE_DATE、またはSQL_TYPE_TIMESTAMPとして表すことができます。
time_expとして示される引数には、列の名前、別のスカラー関数の結果、またはODBC-time-escapeまたはODBC-timestamp-escape を指定できます。基になるデータ型は、SQL_CHAR、SQL_VARCHAR、SQL_TYPE_TIME、またはSQL_TYPE_TIMESTAMPとして表すことができます。
SQL-92 に合わせて、odbc 3.0 では、CURRENT_DATE、CURRENT_TIME、およびCURRENT_TIMESTAMPのタイム日付スカラー関数が追加されました。
関数 | 説明 |
---|---|
CURRENT_DATE( ) (ODBC 3.0) | 現在の日付を返します。 |
CURRENT_TIME[(time-precision)] (ODBC 3.0) | 現在のローカル時間を返します。 引数 time-precision は、戻り値の秒の有効桁数を決定します。 |
CURRENT_TIMESTAMP [(timestamp-precision)] (ODBC 3.0) |
現在のローカル日付と現地時刻をタイムスタンプ値として返します。 引数 timestamp-precision は、返されるタイムスタンプの秒の有効桁数を決定します。 |
CURDATE( ) (ODBC 1.0) | 現在の日付を返します。 |
CURTIME( ) (ODBC 1.0) | 現在のローカル時間を返します。 |
DAYNAME(date_exp) (ODBC 2.0) | 日のデータ ソース固有の名前を含む文字列を返します (たとえば、日曜日から土曜日、日曜日から土日まで)。英語を使用するデータ ソースの場合は Sonntag、ドイツ語を使用するデータ ソースの場合は Sonntag から Samstag)、 date_expの日の部分を返します。 |
DAYOFMONTH(date_exp) (ODBC 1.0) | date_expの月フィールドに基づいて、1 から 31 の範囲の整数値として月の日を返します。 |
DAYOFWEEK(date_exp) (ODBC 1.0) | date_expの週フィールドに基づいて、1 から 7 の範囲の整数値として曜日を返します。1 は日曜日を表します。 |
DAYOFYEAR(date_exp) (ODBC 1.0) | date_expの年フィールドに基づいて、1 から 366 の範囲の整数値として年の日を返します。 |
EXTRACT(extract-field FROMextract-source) (ODBC 3.0) |
extract-sourceextract-field の部分を返します。
extract-source 引数は datetime または interval 式です。 引数 extract-field には、次のいずれかのキーワードを指定できます。 年 月 日 時 分 秒 戻り値の有効桁数は実装定義です。 SECOND を指定しない限り、小数点以下桁数は 0 です。その場合、小数点以下桁数は extract-source フィールドの秒の小数部の有効桁数より小数部です。 |
HOUR(time_exp) (ODBC 1.0) | time_expの時間フィールドに基づいて、0 から 23 の範囲の整数値として時間を返します。 |
MINUTE(time_exp) (ODBC 1.0) | time_expの分フィールドに基づいて、0 から 59 の範囲の整数値として分を返します。 |
MONTH(date_exp) (ODBC 1.0) | date_expの月フィールドに基づいて、1 から 12 の範囲の整数値として月を返します。 |
MONTHNAME(date_exp) (ODBC 2.0) | 月のデータ ソース固有の名前を含む文字列を返します (たとえば、1 月から 12 月、1 月から 12 月。英語を使用するデータ ソースの場合は Januar、ドイツ語を使用するデータ ソースの場合は Januar から Dezember date_exp)。 |
NOW( ) (ODBC 1.0) | 現在の日付と時刻をタイムスタンプ値として返します。 |
QUARTER(date_exp) (ODBC 1.0) | date_expの四半期を 1 から 4 の範囲の整数値として返します。1 は 1 月 1 日から 3 月 31 日を表します。 |
SECOND(time_exp) (ODBC 1.0) | time_expの 2 番目のフィールドに基づいて、0 から 59 の範囲の整数値として 2 番目のフィールドを返します。 |
TIMESTAMPADD(interval, integer_exp, timestamp_exp) (ODBC 2.0) | 型の間隔integer_expintervalをtimestamp_expに追加して計算されたタイムスタンプを返します。
interval の有効な値は、次のキーワードです。 SQL_TSI_FRAC_SECOND SQL_TSI_SECOND SQL_TSI_MINUTE SQL_TSI_HOUR SQL_TSI_DAY SQL_TSI_WEEK SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_YEAR ここで、秒の小数部は 10 億分の 1 秒で表されます。 たとえば、次の SQL ステートメントは、各従業員の名前とその 1 年の記念日を返します。 SELECT NAME, {fn TIMESTAMPADD(SQL_TSI_YEAR, 1, HIRE_DATE)} FROM EMPLOYEES timestamp_expが時刻値で、interval日、週、月、四半期、または年を指定する場合、結果のタイムスタンプを計算する前に、timestamp_expの日付部分が現在の日付に設定されます。 timestamp_expが日付値で、interval小数部の秒、秒、分、または時間を指定する場合、結果のタイムスタンプを計算する前に、timestamp_expの時刻部分は 0 に設定されます。 アプリケーションは、SQL_TIMEDATE_ADD_INTERVALS オプションを指定して SQLGetInfo を呼び出すことによって、データ ソースがサポートする間隔を決定します。 |
TIMESTAMPDIFF(interval, timestamp_exp1, timestamp_exp2) (ODBC 2.0) |
timestamp_exp2がtimestamp_exp1より大きいinterval 型の間隔の整数を返します。
interval の有効な値は、次のキーワードです。 SQL_TSI_FRAC_SECOND SQL_TSI_SECOND SQL_TSI_MINUTE SQL_TSI_HOUR SQL_TSI_DAY SQL_TSI_WEEK SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_YEAR ここで、秒の小数部は 10 億分の 1 秒で表されます。 たとえば、次の SQL ステートメントは、各従業員の名前と、従業員が雇用されている年数を返します。 SELECT NAME, {fn TIMESTAMPDIFF(SQL_TSI_YEAR, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES いずれかのタイムスタンプ式が時刻値で、 interval 日、週、月、四半期、または年を指定する場合、タイムスタンプの日付部分は、タイムスタンプ間の差を計算する前に現在の日付に設定されます。 いずれかのタイムスタンプ式が日付値で、 interval 小数部の秒、秒、分、または時間を指定する場合、タイムスタンプの時間部分は、タイムスタンプ間の差を計算する前に 0 に設定されます。 アプリケーションは、SQL_TIMEDATE_DIFF_INTERVALS オプションを指定して SQLGetInfo を呼び出すことによって、データ ソースがサポートする間隔を決定します。 |
WEEK(date_exp) (ODBC 1.0) | date_expの週フィールドに基づいて、1 から 53 の範囲の整数値として年の週を返します。 |
YEAR(date_exp) (ODBC 1.0) | date_expの年フィールドに基づいて整数値として年を返します。 範囲はデータ ソースに依存します。 |