Datums-, Zeit- und Zeitstempelliterale
Die Escapesequenz für Datums-, Uhrzeit- und Zeitstempelliterale ist
{-type'value'}
wobei literaltyp einer der werte ist, die in der folgenden Tabelle aufgeführt sind.
Literaltyp | Bedeutung | Format des Werts |
---|---|---|
d | Datum | yyyy-mm-dd |
t | Uhrzeit* | hh:mm:ss[1] |
ts | Timestamp | jjjj-mm-tthh:mm:ss[.f...] [1] |
[1] Die Anzahl der Ziffern rechts neben dem Dezimalkomma in einem Zeit- oder Zeitstempelintervallliteral, das eine Sekundenkomponente enthält, hängt von der Sekundengenauigkeit ab, wie im Feld SQL_DESC_PRECISION Deskriptor enthalten. (Weitere Informationen finden Sie unter SQLSetDescField.)
Weitere Informationen zu den Escapesequenzen für Datum, Uhrzeit und Zeitstempel finden Sie in Anhang C: SQL Grammar.
Beispielsweise aktualisieren beide der folgenden SQL-Anweisungen das Öffnungsdatum des Verkaufsauftrags 1023 in der Tabelle "Bestellungen". Die erste Anweisung verwendet die Escapesequenzsyntax. Die zweite Anweisung verwendet die native Oracle Rdb-Syntax für die DATE-Spalte und ist nicht interoperabel.
UPDATE Orders SET OpenDate={d '1995-01-15'} WHERE OrderID=1023
UPDATE Orders SET OpenDate='15-Jan-1995' WHERE OrderID=1023
Die Escapesequenz für ein Datums-, Uhrzeit- oder Zeitstempelliteral kann auch in einer Zeichenvariable platziert werden, die an einen Datums-, Uhrzeit- oder Zeitstempelparameter gebunden ist. Der folgende Code verwendet beispielsweise einen Datumsparameter, der an eine Zeichenvariable gebunden ist, um das Öffnungsdatum der Bestellung 1023 in der Tabelle "Bestellungen" zu aktualisieren:
SQLCHAR OpenDate[56]; // The size of a date literal is 55.
SQLINTEGER OpenDateLenOrInd = SQL_NTS;
// Bind the parameter.
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_TYPE_DATE, 0, 0,
OpenDate, sizeof(OpenDate), &OpenDateLenOrInd);
// Place the date in the OpenDate variable. In addition to the escape
// sequence shown, it would also be possible to use either of the
// strings "{d '1995-01-15'}" and "15-Jan-1995", although the latter
// is data source-specific.
strcpy_s( (char*) OpenDate, _countof(OpenDate), "{d '1995-01-15'}");
// Execute the statement.
SQLExecDirect(hstmt, "UPDATE Orders SET OpenDate=? WHERE OrderID = 1023", SQL_NTS);
In der Regel ist es jedoch effizienter, den Parameter direkt an eine Datumsstruktur zu binden:
SQL_DATE_STRUCT OpenDate;
SQLINTEGER OpenDateInd = 0;
// Bind the parameter.
SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_TYPE_DATE, SQL_TYPE_DATE, 0, 0,
&OpenDate, 0, &OpenDateLen);
// Place the date in the dsOpenDate structure.
OpenDate.year = 1995;
OpenDate.month = 1;
OpenDate.day = 15;
// Execute the statement.
SQLExecDirect(hstmt, "UPDATE Employee SET OpenDate=? WHERE OrderID = 1023", SQL_NTS);
Um festzustellen, ob ein Treiber die ODBC-Escapesequenzen für Datums-, Uhrzeit- oder Zeitstempelliterale unterstützt, ruft eine Anwendung SQLGetTypeInfo auf. Wenn die Datenquelle einen Datentyp für Datum, Uhrzeit oder Zeitstempel unterstützt, muss sie auch die entsprechende Escapesequenz unterstützen.
Datenquellen können auch die in der ANSI SQL-92-Spezifikation definierten Datetime-Literale unterstützen, die sich von den ODBC-Escapesequenzen für Datums-, Uhrzeit- oder Zeitstempelliterale unterscheiden. Um festzustellen, ob eine Datenquelle die ANSI-Literale unterstützt, ruft eine Anwendung SQLGetInfo mit der option SQL_ANSI_SQL_DATETIME_LITERALS auf.
Um festzustellen, ob ein Treiber die ODBC-Escapesequenzen für Intervallliterale unterstützt, ruft eine Anwendung SQLGetTypeInfo auf. Wenn die Datenquelle einen Datentyp für datumstime-Intervalle unterstützt, muss sie auch die entsprechende Escapesequenz unterstützen.
Datenquellen können auch die in der ANSI SQL-92-Spezifikation definierten Datetime-Literale unterstützen, die sich von den ODBC-Escapesequenzen für Datumsintervallliterale unterscheiden. Um festzustellen, ob eine Datenquelle die ANSI-Literale unterstützt, ruft eine Anwendung SQLGetInfo mit der option SQL_ANSI_SQL_DATETIME_LITERALS auf.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für