Uhrzeit-, Datums- und Intervallfunktionen

In der folgenden Tabelle sind Zeit- und Datumsfunktionen aufgeführt, die im ODBC-Skalar-Funktionssatz enthalten sind. Eine Anwendung kann bestimmen, welche Uhrzeit- und Datumsfunktionen von einem Treiber unterstützt werden, indem SIE SQLGetInfo mit einem Informationstyp von SQL_TIMEDATE_FUNCTIONS aufrufen.

Argumente, die als timestamp_exp bezeichnet werden, können der Name einer Spalte, das Ergebnis einer anderen skalaren Funktion oder ein ODBC-Zeit-Escape-, ODBC-Datum-Escape- oder ODBC-Timestamp-Escape sein, wobei der zugrunde liegende Datentyp als SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME, SQL_TYPE_DATE oder SQL_TYPE_TIMESTAMP dargestellt werden kann.

Als date_exp bezeichnete Argumente können der Name einer Spalte, das Ergebnis einer anderen skalaren Funktion oder ein ODBC-Datums-Escape- oder ODBC-Timestamp-Escape sein, wobei der zugrunde liegende Datentyp als SQL_CHAR, SQL_VARCHAR, SQL_TYPE_DATE oder SQL_TYPE_TIMESTAMP dargestellt werden kann.

Argumente, die als time_exp bezeichnet werden, können der Name einer Spalte, das Ergebnis einer anderen skalaren Funktion oder ein ODBC-Time-Escape- oder ODBC-Timestamp-Escape sein, wobei der zugrunde liegende Datentyp als SQL_CHAR, SQL_VARCHAR, SQL_TYPE_TIME oder SQL_TYPE_TIMESTAMP dargestellt werden kann.

Die CURRENT_DATE-, CURRENT_TIME- und CURRENT_TIMESTAMP Zeitdatumsskaerfunktionen wurden in ODBC 3.0 zur Ausrichtung an SQL-92 hinzugefügt.

Funktion BESCHREIBUNG
CURRENT_DATE( ) (ODBC 3.0) Gibt das aktuelle Datum zurück.
CURRENT_TIME[( Zeitgenauigkeit )] (ODBC 3.0) Gibt die aktuelle lokale Zeit zurück. Das Argument "Zeitgenauigkeit " bestimmt die Sekundengenauigkeit des zurückgegebenen Werts.
CURRENT_TIMESTAMP
[( Zeitstempelgenauigkeit )] (ODBC 3.0)
Gibt das aktuelle lokale Datum und die lokale Uhrzeit als Zeitstempelwert zurück. Das Argument "Zeitstempelgenauigkeit " bestimmt die Sekundengenauigkeit des zurückgegebenen Zeitstempels.
CURDATE( ) (ODBC 1.0) Gibt das aktuelle Datum zurück.
CURTIME( ) (ODBC 1.0) Gibt die aktuelle lokale Zeit zurück.
DAYNAME( date_exp ) (ODBC 2.0) Gibt eine Zeichenfolge zurück, die den datenquellenspezifischen Namen des Tages enthält (z. B. Sonntag bis Samstag oder Sonne. bis Sat. für eine Datenquelle, die Englisch oder Sonntag bis Samstag für eine Datenquelle verwendet, die Deutsch verwendet) für den Tagesteil von date_exp.
DAYOFMONTH( date_exp ) (ODBC 1.0) Gibt den Tag des Monats basierend auf dem Monatsfeld in date_exp als ganzzahligen Wert im Bereich von 1 bis 31 zurück.
DAYOFWEEK( date_exp ) (ODBC 1.0) Gibt den Wochentag basierend auf dem Feld "Woche" in date_exp als ganzzahligen Wert im Bereich von 1 bis 7 zurück, wobei 1 sonntags steht.
DAYOFYEAR( date_exp ) (ODBC 1.0) Gibt den Tag des Jahres basierend auf dem Feld "Jahr" in date_exp als ganzzahligen Wert im Bereich von 1 bis 366 zurück.
EXTRACT( Extract-Field FROM extract-source ) (ODBC 3.0) Gibt den Extraktfeldteil der Extraktquelle zurück. Das Argument "Extraktquelle " ist ein Datetime- oder Intervallausdruck. Das Argument "Extraktfeld " kann eines der folgenden Schlüsselwörter sein:

JAHR MONAT TAG MINUTE SEKUNDE

Die Genauigkeit des zurückgegebenen Werts ist implementierungsdefiniert. Die Skalierung ist 0, es sei denn, DIE SEKUNDE ist angegeben, in diesem Fall ist die Skalierung nicht kleiner als die Bruch sekundengenauigkeit des Extraktquellfelds .
HOUR( time_exp ) (ODBC 1.0) Gibt die Stunde basierend auf dem Stundenfeld in time_exp als ganzzahligen Wert im Bereich von 0-23 zurück.
MINUTE( time_exp ) (ODBC 1.0) Gibt die Minute basierend auf dem Minutenfeld in time_exp als ganzzahligen Wert im Bereich von 0 bis 59 zurück.
MONTH( date_exp ) (ODBC 1.0) Gibt den Monat basierend auf dem Monatsfeld in date_exp als ganzzahligen Wert im Bereich von 1 bis 12 zurück.
MONTHNAME( date_exp ) (ODBC 2.0) Gibt eine Zeichenfolge zurück, die den datenquellenspezifischen Namen des Monats enthält (z. B. Januar bis Dezember oder Dez. für eine Datenquelle, die Englisch oder Januar bis Dezember für eine Datenquelle verwendet, die Deutsch verwendet) für den Monatsteil von date_exp.
NOW( ) (ODBC 1.0) Gibt das aktuelle Datum und die aktuelle Uhrzeit als Zeitstempelwert zurück.
QUARTAL( date_exp ) (ODBC 1.0) Gibt das Quartal in date_exp als ganzzahligen Wert im Bereich von 1 bis 4 zurück, wobei 1 den 1. Januar bis 31. März darstellt.
SECOND( time_exp ) (ODBC 1.0) Gibt die zweite basierend auf dem zweiten Feld in time_exp als ganzzahligen Wert im Bereich von 0-59 zurück.
TIMESTAMPADD( Intervall, integer_exp, timestamp_exp ) (ODBC 2.0) Gibt den Zeitstempel zurück, der berechnet wird, indem integer_exp Intervalle des Typintervalls zu timestamp_exp hinzugefügt werden. Gültige Werte des Intervalls sind die folgenden Schlüsselwörter:

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

Wobei Bruchsekunden in Milliarden sekunden ausgedrückt werden. Die folgende SQL-Anweisung gibt z. B. den Namen jedes Mitarbeiters und seinen einjährigen Jahrestag zurück:

SELECT NAME, {fn TIMESTAMPADD(SQL_TSI_YEAR, 1, HIRE_DATE)} FROM EMPLOYEES

Wenn timestamp_exp ein Zeitwert und Intervall Tage, Wochen, Monate, Quartale oder Jahre angibt, wird der Datumsbereich timestamp_exp auf das aktuelle Datum festgelegt, bevor der resultierende Zeitstempel berechnet wird.

Wenn timestamp_exp ein Datumswert und Intervall Bruch sekunden, Sekunden, Minuten oder Stunden angibt, wird der Zeitteil timestamp_exp auf 0 festgelegt, bevor der resultierende Zeitstempel berechnet wird.

Eine Anwendung bestimmt, welche Intervalle eine Datenquelle durch Aufrufen von SQLGetInfo mit der option SQL_TIMEDATE_ADD_INTERVALS unterstützt.
TIMESTAMPDIFF( Interval, timestamp_exp1, timestamp_exp2 ) (ODBC 2.0) Gibt die ganze Anzahl der Intervalle des Typs zurück, um die timestamp_exp2 größer als timestamp_exp1 ist. Gültige Werte des Intervalls sind die folgenden Schlüsselwörter:

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

Wobei Bruchsekunden in Milliarden sekunden ausgedrückt werden. Die folgende SQL-Anweisung gibt z. B. den Namen jedes Mitarbeiters und die Anzahl der Jahre zurück, die er beschäftigt hat:

SELECT NAME, {fn TIMESTAMPDIFF(SQL_TSI_YEAR, {fn CURDATE()}, HIRE_DATE)} FROM EMPLOYEES

Wenn ein Zeitstempelausdruck ein Zeitwert und Intervall Tage, Wochen, Monate, Quartale oder Jahre angibt, wird der Datumsteil dieses Zeitstempels auf das aktuelle Datum festgelegt, bevor die Differenz zwischen den Zeitstempeln berechnet wird.

Wenn ein Zeitstempelausdruck ein Datumswert und ein Intervall Bruch sekunden, Sekunden, Minuten oder Stunden angibt, wird der Zeitteil dieses Zeitstempels auf 0 festgelegt, bevor die Differenz zwischen den Zeitstempeln berechnet wird.

Eine Anwendung bestimmt, welche Intervalle eine Datenquelle durch Aufrufen von SQLGetInfo mit der Option SQL_TIMEDATE_DIFF_INTERVALS unterstützt.
WEEK( date_exp ) (ODBC 1.0) Gibt die Woche des Jahres basierend auf dem Feld "Woche" in date_exp als ganzzahligen Wert im Bereich von 1 bis 53 zurück.
YEAR( date_exp ) (ODBC 1.0) Gibt das Jahr basierend auf dem Feld "Jahr" in date_exp als ganzzahligen Wert zurück. Der Bereich ist datenquellenabhängig.