Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De escape-sequentie voor datum-, tijd- en tijdstempelwaarden is
{-type'value'}
waarbij het letterlijke type een van de waarden is die worden vermeld in de volgende tabel.
| letterlijk type | Meaning | Formaat van waarde |
|---|---|---|
| d | Datum | yyyy-Mm-Dd |
| T | Tijd* | hh:mm:ss[1] |
| Ts | Tijdstempel | jjjj-mm-dduu:mm:ss[.f...][1] |
[1] Het aantal cijfers rechts van het decimale punt in een tijd- of tijdstempelinterval dat een secondenonderdeel bevat, is afhankelijk van de precisie van seconden, zoals is opgenomen in het veld SQL_DESC_PRECISION descriptor. (Zie SQLSetDescField voor meer informatie.)
Voor meer informatie over de escapereeksen voor datum, tijd en tijdstempel, zie Bijlage C: SQL Grammar.
In beide SQL-instructies wordt bijvoorbeeld de open datum van verkooporder 1023 in de tabel Orders bijgewerkt. De eerste instructie bedient zich van de escape-sequentiesyntaxis. De tweede instructie maakt gebruik van de systeemeigen Oracle Rdb-syntaxis voor de kolom DATE en is niet interoperabel.
UPDATE Orders SET OpenDate={d '1995-01-15'} WHERE OrderID=1023
UPDATE Orders SET OpenDate='15-Jan-1995' WHERE OrderID=1023
De escapereeks voor een letterlijke datum, tijd of tijdstempel kan ook worden geplaatst in een tekenvariabele die is gebonden aan een datum-, tijd- of tijdstempelparameter. De volgende code gebruikt bijvoorbeeld een datumparameter die is gebonden aan een tekenvariabele om de open datum van verkooporder 1023 in de tabel Orders bij te werken:
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);
Het is echter meestal efficiƫnter om de parameter rechtstreeks aan een datumstructuur te 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);
Een toepassing roept SQLGetTypeInfo aan om te bepalen of een stuurprogramma ondersteuning biedt voor de ODBC-escapereeksen voor letterlijke datum, tijd of tijdstempel. Als de gegevensbron een datum-, tijd- of tijdstempelgegevenstype ondersteunt, moet deze ook de bijbehorende escape-reeks ondersteunen.
Gegevensbronnen kunnen ook ondersteuning bieden voor de datetime-constanten die zijn vastgesteld in de ANSI SQL-92-specificatie, die afwijken van de ODBC-escapesequenties voor datums-, tijds- of tijdstempelconstanten. Om te bepalen of een gegevensbron de LETTERLIJKE ANSI-gegevens ondersteunt, roept een toepassing SQLGetInfo aan met de optie SQL_ANSI_SQL_DATETIME_LITERALS.
Om te bepalen of een stuurprogramma de ODBC-escapereeksen ondersteunt voor letterlijke intervalperioden, roept een toepassing SQLGetTypeInfo aan. Als de gegevensbron een gegevenstype voor een datum/tijd-interval ondersteunt, moet deze ook de bijbehorende escape-reeks ondersteunen.
Gegevensbronnen kunnen ook ondersteuning bieden voor de letterlijke datum-/tijdwaarden zoals gedefinieerd in de ANSI SQL-92-specificatie, die verschillen van de ODBC-escapereeksen voor letterlijke waarden van datum-/tijdintervallen. Om te bepalen of een gegevensbron de LETTERLIJKE ANSI-gegevens ondersteunt, roept een toepassing SQLGetInfo aan met de optie SQL_ANSI_SQL_DATETIME_LITERALS.