Aracılığıyla paylaş


sql gelen dönüştürmeleri c

Aşağıdaki tabloda listelenir kimden dönüştürürken dikkate alınacak konulara SQL ServerTarih/saat türleri c türlerine.

Dönüşümleri

SQL_C_DATE

SQL_C_TIME

SQL_C_TIMESTAMP

SQL_C_SS_TIME2

SQL_C_SS_TIMESTAMPOFFSET

SQL_C_BINARY

SQL_C_CHAR

SQL_C_WCHAR

SQL_CHAR

2,3,4,5

2,3,6,7,8

2,3,9,10,11

2,3,6,7

2,3,9,10,11

1

1

1

SQL_WCHAR

2,3,4,5

2,3,6,7,8

2,3,9,10,11

2,3,6,7

2,3,9,10,11

1

1

1

SQL_TYPE_DATE

Tamam

12

13

12

13,23

14

16

16

SQL_SS_TIME2

12

8

15

Tamam

10,23

17

16

16

SQL_TYPE_TIMESTAMP

18

7,8

Tamam

7

23

19

16

16

SQL_SS_TIMESTAMPOFFSET

18,22

7,8,20

20

7,20

Tamam

21

16

16

Semboller için anahtar

Simge

Anlamı

Tamam

Dönüşüm sorunları yok.

1

Önce kuralları SQL Server 2008Uygula.

2

Baştaki ve sondaki boşluklar yoksayılır.

3

Dize, Tarih, Saat, dilimimi veya timezoneoffset ayrıştırılır ve 9 basamak Kesirli saniye için izin verir. Bir timezoneoffset ayrıştırılır, istemci dilimimi dönüştürülür. Bu dönüştürme sırasında bir hata meydana gelirse, sqlstate 22018 ve "Tarih Saat alanı taşması" iletisi ile tanılama kaydı oluşturulur.

4

Geçerli tarih, zaman damgası veya timestampoffset değeri değeri ise, sqlstate 22018 ve "ınvalid character value for cast specification" iletisi ile tanılama kaydı oluşturulur.

5

Zaman sıfır ise, sqlstate 01S07 ve "Fractional kesilmesi" iletisi ile tanılama kaydı oluşturulur.

6

Geçerli zaman, zaman damgası veya timestampoffset değeri değeri ise, sqlstate 22018 ve "ınvalid character value for cast specification" iletisi ile tanılama kaydı oluşturulur.

7

Tarih bileşeni yok sayılır.

8

Kesirli saniye sıfır ise, sqlstate 01S07 ve "Fractional kesilmesi" iletisi ile tanılama kaydı oluşturulur.

9

Geçerli tarih, Saat, zaman damgası veya timestampoffset değeri değeri ise, sqlstate 22018 ve "ınvalid character value for cast specification" iletisi ile tanılama kaydı oluşturulur.

10

Değer geçerli bir saat ise, Tarih bileşeni geçerli istemci Tarih olarak ayarlanır.

11

Değer geçerli bir tarih değilse, zaman sıfır olarak ayarlanır.

12

Tanılama kaydı sqlstate 07006 ve "yasak veri türü özniteliği ihlali" iletisi oluşturulur.

13

Süre sıfır olarak ayarlanır.

14

Arabellek bir sql_date_struct kapsayacak kadar geniş değilse, sqlstate 22003 ve "Sayısal değer aralık dışında" iletisi ile tanılama kaydı oluşturulur.

15

Tarih, geçerli istemci Tarih olarak ayarlanır.

16

Arabellek dönüştürülen dizge değeri ancak yalnızca Kesirli saniye kapsayacak kadar geniş değilse, kesilme oluşur ve tanılama kaydı sqlstate 01004 ve "sağa kesildi iletisini dize veri," oluşturulur. Arabellek dize değeri Tarih, Saat veya mahsup bileşenleri kesilmeden kapsayacak kadar geniş değilse, sqlstate 22003 ve "Sayısal değer aralık dışında" iletisi ile tanılama kaydı oluşturulur. Dönüştürülen dizge sağdaki kısmını Kesirli saniye içermediğinden tarihi ve timestampoffset, sqlstate 01004 mümkün değildir. Bu nedenle, herhangi bir kesilmesi veri kaybına neden olur.

17

Arabellek bir SQL_SS_TIME2_STRUCT kapsayacak kadar geniş değilse, sqlstate 22003 ve "Sayısal değer aralık dışında" iletisi ile tanılama kaydı oluşturulur.

18

Zaman sıfır ise, sqlstate 01S07 ve "Fractional kesilmesi" iletisi ile tanılama kaydı oluşturulur.

19

Sunucu türü datetime veya smalldatetime ise, değer tds Tel biçimine karşılık gelen ve bir 4 baytlık smalldatetime değeri ve datetime için bir 8 bayt değeri olacaktır.

Sunucu türü olduğundan datetime2 değerini SQL_TIMESTAMP_STRUCT döndürülür. Arabellek döndürülen değer karşılayacak kadar büyük değilse, sqlstate 22003 ve "Sayısal değer aralık dışında" iletisi ile tanılama kaydı oluşturulur.

20

İstemci dilimimi dönüştürülür. Bu dönüştürme sırasında bir hata meydana gelirse, sqlstate 22008 ve "Tarih Saat alanı taşması" iletisi ile tanılama kaydı oluşturulur.

21

Arabellek bir SQL_SS_TIMESTAMPOFFSET_STRUCT kapsayacak kadar büyük değer bir SQL_SS_TIMESTAMPOFFSET_STRUCT döndürülür. Aksi takdirde, sqlstate 22003 ve "Sayısal değer aralık dışında" iletisi ile tanılama kaydı oluşturulur.

22

Önce tarihi ayıklanır değeri için istemci diliminin dönüştürülür. Bu diğer dönüşümler timestampoffset türleri ile tutarlılık sağlar. Bu dönüştürme sırasında bir hata meydana gelirse, sqlstate 22008 ve "Tarih Saat alanı taşması" iletisi ile tanılama kaydı oluşturulur. Bu basit kesme tarafından alınan değeri farklı bir tarih neden.

Bu konudaki tabloda, istemciye döndürülen türü ve bağlama türü arasında dönüştürme açıklar. Çıkış parametreleri, sunucu türü belirtilen için SQLBindParameterdeğil sunucuda bir örtük dönüştürme gerçek türü sunucu tarafından gerçekleştirilecek maç yapar ve istemciye döndürülen türü ile belirtilen tür maç olacak SQLBindParameter. Sunucunun dönüştürme kuralları yukarıdaki tabloda listelenenlerden farklı olduğunda bu dönüştürme beklenmeyen sonuçlara yol açabilir. Örneğin, ne zaman bir varsayılan tarih sağlanmalıdır, SQL Server1900-1-1 yerine, geçerli tarihi kullanır.

Ayrıca bkz.

Kavramlar

Tarih/Saat (odbc) geliştirmeleri