Aracılığıyla paylaş


Tarih, Saat ve Zaman Damgası Değişmez Değerleri

Tarih, saat ve zaman damgası değişmez değerleri için kaçış dizisi şudur:

{-type'value'}

burada literal türü, aşağıdaki tabloda listelenen değerlerden biridir.

literal türü Meaning Değer biçimi
d Date yyyy-Mm-Dd
T Saat* hh:mm:ss
Ts Zaman Damgası yyyy-mm-ddhh:mm:ss[.f...][1]

Saniye bileşeni içeren bir zaman veya zaman damgası aralığı değişmez değerinin içindeki ondalık noktasının sağındaki basamak sayısı, SQL_DESC_PRECISION tanımlayıcı alanında yer alan saniye duyarlığına bağlıdır. (Daha fazla bilgi için bkz . SQLSetDescField.)

Tarih, saat ve zaman damgası kaçış dizileri hakkında daha fazla bilgi için ek C: SQL Dil Bilgisi'nde Tarih, Saat ve Zaman Damgası Kaçış Sıraları'na bakın.

Örneğin, aşağıdaki SQL deyimlerinin her ikisi de Siparişler tablosundaki satış siparişi 1023'ün açık tarihini güncelleştirir. İlk ifade kaçış dizisi söz dizimini kullanır. İkinci deyim, TARİh sütunu için Oracle Rdb yerel söz dizimini kullanır ve birlikte çalışamaz.

UPDATE Orders SET OpenDate={d '1995-01-15'} WHERE OrderID=1023  
UPDATE Orders SET OpenDate='15-Jan-1995' WHERE OrderID=1023  

Tarih, saat veya zaman damgası değişmez değeri için kaçış dizisi, tarih, saat veya zaman damgası parametresine bağlı bir karakter değişkenine de yerleştirilebilir. Örneğin, aşağıdaki kod Siparişler tablosundaki satış siparişi 1023'ün açık tarihini güncelleştirmek için karakter değişkenine bağlı bir tarih parametresi kullanır:

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);  

Ancak, parametreyi doğrudan bir tarih yapısına bağlamak genellikle daha verimlidir:

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);  

Bir sürücünün tarih, saat veya zaman damgası değişmez değerleri için ODBC kaçış dizilerini destekleyip desteklemediğini belirlemek için bir uygulama SQLGetTypeInfo çağırır. Veri kaynağı bir tarih, saat veya zaman damgası veri türünü destekliyorsa ilgili kaçış sırasını da desteklemelidir.

Veri kaynakları ayrıca ANSI SQL-92 belirtiminde tanımlanan ve tarih, saat veya zaman damgası değişmez değerleri için ODBC kaçış dizilerinden farklı olan tarih saat değişmez değerlerini de destekleyebilir. Bir veri kaynağının ANSI değişmez değerlerini destekleyip desteklemediğini belirlemek için, bir uygulama SQL_ANSI_SQL_DATETIME_LITERALS seçeneğiyle SQLGetInfo çağırır.

Bir sürücünün aralık değişmez değerleri için ODBC kaçış dizilerini destekleyip desteklemediğini belirlemek için bir uygulama SQLGetTypeInfo çağırır. Veri kaynağı bir tarih saat aralığı veri türünü destekliyorsa ilgili kaçış sırasını da desteklemelidir.

Veri kaynakları, ANSI SQL-92 belirtiminde tanımlanan ve tarih saat aralığı değişmez değerleri için ODBC kaçış dizilerinden farklı olan tarih saat değişmez değerlerini de destekleyebilir. Bir veri kaynağının ANSI değişmez değerlerini destekleyip desteklemediğini belirlemek için, bir uygulama SQL_ANSI_SQL_DATETIME_LITERALS seçeneğiyle SQLGetInfo çağırır.