datetime2 (Transact-sql)

24 Saatlik temel Saat ile birlikte tarihi tanımlar. datetime2mevcut bir uzantısı olarak kabul edilebilir datetimedaha geniş bir tarih aralığı, daha büyük varsayılan kesirli duyarlık ve isteğe bağlı kullanıcı tanımlı duyarlık türü.

datetime2 açıklaması

Özellik

Değer

Sözdizimi

datetime2 [ (fractional seconds precision) ]

Kullanım

declare @ MyDatetime2datetime2(7)

create table Table1 (Sütun1 datetime2(7) )

Varsayılan dize hazır bilgi biçimi

(aşağı düzey istemci için kullanılır)

yyyy-AA-GG: SS [.fractional saniye]

Daha fazla bilgi için bkz: alt düzey istemciler için "geriye dönük uyumluluğu" izleyen bölümde.

Tarih aralığı

0001-01-01 ile 9999-12-31 arası

Ocak 1,1 31 Aralık 9999 ad üzerinden reklam

Saat aralığı

00:00:00 ile 23:59:59.9999999 arası

Saat dilimi uzaklığı aralığı

Hiçbiri

Öğe aralıkları

yyyy bir yıl gösteren 0001 9999 arasında değişen bir dört basamaklı numarasıdır.

mm olduğu belirtilen yıldaki ay gösteren 01 ile 12'ye kadar bir iki basamaklı sayı olarak.

GG 01 ile belirtilen ayın gününü gösteren ay, bağlı 31 arasında değişen bir iki basamaklı sayı olduğunu.

hh saat temsil 23 için 00 arasında değişen bir iki basamaklı sayı, oluşur.

dakikayı gösteren 59 için 00 arasında değişen bir iki basamaklı sayı, AA olur.

SS ise ikinci temsil 59 için 00 arasında değişen bir iki basamaklı bir sayıdır.

n * Kesirli saniye temsil eden bir sıfır için yedi basamaklı 0 ile 9999999 sayıdır.

Karakter uzunluğu

19 pozisyonları en az (yyyy-AA-GG: SS) için en fazla 27 (yyyy-AA-GG hh:mm:ss.0000000)

Duyarlık, ölçek

0-7 basamak, ile 100ns doğruluk. Varsayılan duyarlık 7 basamak olduğunu.

Depolama boyutu

3 daha az duyarlılıklar için 6 bayt; 7 bayt için duyarlılıklar 3 ve 4. Tüm diğer duyarlılıklar 8 bayt gerektirir.

Kesinlik

100 nanosaniye şeklindedir

Varsayılan değer

1900-01-01 00:00:00

Calendar

Gregoryen

Kullanıcı tanımlı kesirli saniye kesinliği

Evet

Saat dilimi uzaklığı uyumluluğu ve koruması

Hayır

Yaz saati uygulaması uyumluluğu

Hayır

Veri türü meta verileri görmek kullanmalısınızsys.typesKatalog (Transact-sql)ya typeproperty (Transact-sql). Duyarlık ve ölçeği biraz Tarih ve Saat veri türleri için değişkendir. Duyarlık ve ölçeği sütun almak için bkz: columnproperty (Transact-sql), col_length (Transact-sql), ya sys.Columns (Transact-sql).

Desteklenen dize Literal biçimleri datetime2 için

Aşağıdaki tablolarda listelenmektedir desteklenen ISO 8601 ve odbc dize hazır bilgi biçimleri için datetime2. Tarih ve saati bölümleri alfabetik, sayısal, unseparated ve zaman biçimleri hakkında bilgi için datetime2bakın tarihi (Transact-sql)ve Saat (Transact-sql).

ISO 8601

Açıklamalar

yyyy-mm-ddThh [. nnnnnnn]

yyyy-mm-ddThh [. nnnnnnn]

Bu biçim, set language ve set dateformat oturum yerel ayarlar tarafından etkilenmez. T, İki nokta üst üste (:) ve nokta (.) dize hazır bilgi, örneğin ' 2007 dahil-05-02T19:58:47.1234567'.

ODBC

Açıklama

{ts 'yyyy-aa-gg: SS [.fractional saniye]' }

Belirli odbc API:

  • Kesirli saniye temsil eden, ondalık virgülün sağındaki basamak sayısı 0-7 (100 nanosaniye şeklindedir) yukarı belirtilebilir.

  • De SQL Server 2012, uyumluluk düzeyi için 10, ayarlanan literal dahili olarak yeni eşler timetürü.

ANSI ve ISO 8601 Uyumluluğu

ANSI ve ISO 8601 uygunluk tarihi ve zaman geçerli datetime2.

Aşağı düzey istemciler için geriye dönük uyumluluk

Bazı alt düzey istemci desteği time, date, datetime2ve datetimeoffset veri türlerini. Aşağıdaki tablo arasındaki üst düzey bir örneğini türü eşleme gösterir SQL Serverve aşağı düzey istemciler.

SQL Server 2012veri türü

Alt düzey istemci için varsayılan dize hazır bilgi biçimi geçti

Alt düzey odbc

Alt düzey oledb

Alt düzey odbc

Alt düzey SQLCLIENT

time

: dd: SS [. nnnnnnn]

sql_wvarchar veya sql_varchar

DBTYPE_WSTRor dbtype_str

Java.SQL.String

Dize veya SqString

date

YYYY-AA-GG

sql_wvarchar veya sql_varchar

DBTYPE_WSTRor dbtype_str

Java.SQL.String

Dize veya SqString

datetime2

yyyy-AA-GG: SS [. nnnnnnn]

sql_wvarchar veya sql_varchar

DBTYPE_WSTRor dbtype_str

Java.SQL.String

Dize veya SqString

datetimeoffset

yyyy-AA-GG: SS [. nnnnnnn] [+ |-] SS: dd

sql_wvarchar veya sql_varchar

DBTYPE_WSTRor dbtype_str

Java.SQL.String

Dize veya SqString

Tarih ve Saat Verilerini Dönüştürme

Tarih ve Saat veri türleri için dönüştürdüğünüzde SQL Servercant tanımak Tarih veya saat olarak tüm değerleri reddeder. Tarih ve Saat veri ile cast ve convert işlevlerini kullanma hakkında daha fazla bilgi için bkz.CAST ve CONVERT (Transact-SQL)

Datetime2 veri türü diğer Tarih ve saat türleri için dönüştürme

Aşağıdaki tabloda ne olacağı açıklanır ne zaman bir datetime2veri türü diğer Tarih ve Saat veri türleri dönüştürülür.

Değerin dönüştürüleceği veri türü

Dönüştürme ayrıntıları

date

Yıl, ay ve gün kopyalanır.

Aşağıdaki kod dönüştürme sonuçlarını gösterir bir datetime2(4)değeri bir datedeğer.

DECLARE @datetime2 datetime2(4) = '12-10-25 12:32:10.1234';
DECLARE @date date = @datetime2;
SELECT @datetime2 AS '@datetime2', @date AS 'date';
--Result
--@datetime2               date
-------------------------- ----------
--2025-12-10 12:32:10.1234 2025-12-10
--
--(1 row(s) affected)
DECLARE @datetime2 datetime2(4) = '12-10-25 12:32:10.1234';
DECLARE @date date = @datetime2;
SELECT @datetime2 AS '@datetime2', @date AS 'date';
--Result
--@datetime2               date
-------------------------- ----------
--2025-12-10 12:32:10.1234 2025-12-10
--
--(1 row(s) affected)

time(n)

Saat, dakika, saniye ve Kesirli saniye kopyalanır.

Aşağıdaki kod dönüştürme sonuçlarını gösterir bir datetime2(4)değeri bir time(3)değer.

DECLARE @datetime2 datetime2(4) = '12-10-25 12:32:10.1234';
DECLARE @time time(3) = @datetime2;
SELECT @datetime2 AS '@datetime2', @time AS 'time(3)';
--Result
--@datetime2                time(3) 
-------------------------- ------------
--2025-12-10 12:32:10.1234 12:32:10.123
--
--(1 row(s) affected)
DECLARE @datetime2 datetime2(4) = '12-10-25 12:32:10.1234';
DECLARE @time time(3) = @datetime2;
SELECT @datetime2 AS '@datetime2', @time AS 'time(3)';
--Result
--@datetime2                time(3) 
-------------------------- ------------
--2025-12-10 12:32:10.1234 12:32:10.123
--
--(1 row(s) affected)

datetime

Tarih ve saat değerleri kopyalanır. Ne zaman kesirli duyarlığını datetimeoffset(n)değeri üç basamak büyük, değer kesilir.

Aşağıdaki kod dönüştürme sonuçlarını gösterir bir datetime2değeri bir datetimedeğer.

DECLARE @datetime2 datetime = '12-10-25 12:32:10.1234567
DECLARE @datetime datetime = @datetime2;
SELECT @datetime2 AS '@datetime2', @datetime AS '@datetime';
--Result
--@datetime2                  @datetime
----------------------------- -----------------------
--2025-12-10 12:32:10.1234567 2025-12-10 12:32:10.123
--
--(1 row(s) affected)
DECLARE @datetime2 datetime = '12-10-25 12:32:10.1234567
DECLARE @datetime datetime = @datetime2;
SELECT @datetime2 AS '@datetime2', @datetime AS '@datetime';
--Result
--@datetime2                  @datetime
----------------------------- -----------------------
--2025-12-10 12:32:10.1234567 2025-12-10 12:32:10.123
--
--(1 row(s) affected)

smalldatetime

Tarih, Saat ve dakika kopyalanır. Saniye, 0 olarak ayarlanır.

Aşağıdaki kod dönüştürme sonuçlarını gösterir bir datetime2değeri bir smalldatetimedeğer.

DECLARE @datetime2 datetime2 = '12-10-25 12:32:10.1234567';
DECLARE @smalldatetime smalldatetime = @datetime2;
SELECT @datetime2 AS '@datetime2', @smalldatetime AS '@smalldatetime';
--Result
--@datetime2                  @datetime
----------------------------- -----------------------
--2025-12-10 12:32:10.1234567 2025-12-10 12:32:10.123
--
--(1 row(s) affected)
DECLARE @datetime2 datetime2 = '12-10-25 12:32:10.1234567';
DECLARE @smalldatetime smalldatetime = @datetime2;
SELECT @datetime2 AS '@datetime2', @smalldatetime AS '@smalldatetime';
--Result
--@datetime2                  @datetime
----------------------------- -----------------------
--2025-12-10 12:32:10.1234567 2025-12-10 12:32:10.123
--
--(1 row(s) affected)

datetimeoffset(n)

datetime2(n)Değeri kopyalanır datetimeoffset(n)değer. Saat dilimi uzaklığı ayarlamak için + 00: 0. Ne zaman duyarlığını datetime2(n)değeri duyarlılığı büyük olduğu datetimeoffset(n)değeri sığdırmak için kesirli kısmı.

Aşağıdaki kod dönüştürme sonuçlarını gösterir bir datetime2(5)değeri bir datetimeoffset(3)değer.

DECLARE @datetime2 datetime2(3) = '12-10-25 12:32:10.1234567';
DECLARE @datetimeoffset datetimeoffset(2) = @datetime2;
SELECT @datetime2 AS '@datetime2', @datetimeoffset AS '@datetimeoffset(2)';
--Result
--@datetime2              @datetimeoffset(2)
------------------------- -----------------------------
--2025-12-10 12:32:10.123 2025-12-10 12:32:10.12 +00:00
--
--(1 row(s) affected)
DECLARE @datetime2 datetime2(3) = '12-10-25 12:32:10.1234567';
DECLARE @datetimeoffset datetimeoffset(2) = @datetime2;
SELECT @datetime2 AS '@datetime2', @datetimeoffset AS '@datetimeoffset(2)';
--Result
--@datetime2              @datetimeoffset(2)
------------------------- -----------------------------
--2025-12-10 12:32:10.123 2025-12-10 12:32:10.12 +00:00
--
--(1 row(s) affected)

Dize hazır bilgi datetime2 için dönüştürme

Eğer tüm parçaları dizeleri geçerli biçimlerde dönüşümleri dize hazır bilgi Tarih ve saat türleri için izin verilir. Aksi takdirde, bir çalışma zamanı hatası ortaya çıkar. Örtülü Dönüştürmelere veya bir stil, dize hazır bilgi Tarih ve saat türleri belirtmeyen açık dönüştürmeleri geçerli oturumu varsayılan biçiminde olacaktır. Aşağıdaki tablo bir dize dönüştürme kuralları için hazır gösterir datetime2veri türü.

Giriş dize hazır bilgi

datetime2(n)

ODBC TARİH

odbc dize hazır bilgi için eşleştirilir datetimeveri türü. odbc DATETIME rakamları herhangi bir atama işlemi datetime2türleri arasında bir örtük dönüştürme neden olur datetimeve bu tür dönüştürme kuralları tarafından tanımlanan.

ODBC ZAMAN

Bakın önceki odbc tarih kuralı.

ODBC DATETIME

Bakın önceki odbc tarih kuralı.

Yalnızca Tarih

00: 00: 00 Arası saat bölümünü öntanımlıdır.

Yalnızca Tarih

Tarih Bölümü varsayılan olarak 1900-1-1.

Sadece DİLİMİMİ

Varsayılan değerler sağlanır.

TARİH + SAAT

Önemsiz

TARİHİ + TIMEZONE

İzin verilmiyor.

TIMEZONE_TIME

Tarih Bölümü varsayılan olarak 1900-1-1. DİLİMİMİ girdi sayılır.

TARİH + SAAT + TIMEZONE

Yerel DATETIME kullanılır.

Örnekler

Aşağıdaki örnek, her bir dize vuran sonuçlarını karşılaştırır dateve timeveri türü.

SELECT 
     CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' 
    ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 
        'smalldatetime' 
    ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 
        'datetime2'
    ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 
        'datetimeoffset';

SELECT 
     CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' 
    ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 
        'smalldatetime' 
    ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 
        'datetime2'
    ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 
        'datetimeoffset';

Sonuç kümesi buradadır.

Veri türü

Çıktı

time

12:35:29. 1234567

date

2007-05-08

smalldatetime

2007-05-08 12:35:00

datetime

2007-05-08 12:35:29.123

datetime2

2007-05-08 12:35:29. 1234567

datetimeoffset

2007-05-08 12:35:29.1234567 +12:15

Ayrıca bkz.

Başvuru

CAST ve CONVERT (Transact-SQL)