küçük tarih saat (Transact-SQL)

Günün bir saati ile birleştirilmiş bir tarih tanımlar. Zaman 24 saatlik bir günü temel alır, saniyeler her zaman sıfırdır (:00) ve kesirli saniye yoktur.

[!NOT]

Yeni iş için time, date, datetime2 ve datetimeoffset veri türlerini kullanın. Bu türler SQL Standardı ile uyumludur. Daha taşınabilirdirler. time, datetime2 ve datetimeoffset saniyelerde daha fazla kesinlik sağlar. datetimeoffset, küresel olarak dağıtılan uygulamalarda saat dilimi desteği sağlar.

smalldatetime Açıklaması

Sözdizimi

smalldatetime

Kullanım

DECLARE @MySmalldatetime smalldatetime

CREATE TABLE Tablo1 ( Sütun1 smalldatetime )

Varsayılan dize hazır değeri biçimleri

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

Geçerli değildir

Tarih aralığı

1900-01-01 ile 2079-06-06 arası

1 Ocak 1900 ile 6 Haziran 2079

Saat aralığı

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

2007-05-09 23:59:59 şu değere yuvarlanır:

2007-05-10 00:00:00

Öğe aralıkları

YYYY, 1900 ile 2079 arasında değişen, bir yılı temsil eden dört rakamdır.

MM, 01 ile 12 arasında değişen, belirtilen yılın bir ayını temsil eden iki rakamdır.

DD, aya bağlı olarak 01 ile 31 arasında değişen, belirtilen ayın bir gününü temsil eden iki rakamdır.

hh, 00 ile 23 arasında değişen, saati temsil eden iki rakamdır.

mm, 00 ile 59 arasında değişen, dakikayı temsil eden iki rakamdır.

ss, 00 ile 59 arasında değişen, saniyeyi temsil eden iki rakamdır. 29,998 saniye veya daha düşük olan değerler bir önceki en yakın dakikaya, 29,999 saniye veya daha büyük olan değerler bir sonraki en yakın dakikaya yuvarlanır.

Karakter uzunluğu

En çok 19 hane

Depolama boyutu

4 bayt, sabit.

Kesinlik

Bir dakika

Varsayılan değer

1900-01-01 00:00:00

Calendar

Gregoryen

(Tam yıl aralıklarını içermez.)

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

Hayır

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

Hayır

Yaz saati uygulaması uyumluluğu

Hayır

ANSI ve ISO 8601 Uyumluluğu

smalldatetime ANSI veya ISO 8601 uyumlu değildir.

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

Tarih ve saat veri türlerini dönüştürdüğünüzde, SQL Server, tarih ve saat olarak algılayamadığı tüm değerleri reddeder. CAST ve CONVERT işlevlerini tarih ve saat verileriyle kullanma hakkında daha fazla bilgi için, bkz. CAST ve CONVERT (Transact-SQL).

smalldatetime Türünü Diğer Tarih ve Saat Türlerine Dönüştürme

Aşağıdaki tablo bir smalldatetime veri türü diğer tarih ve saat veri türlerine dönüştürüldüğünde ne olduğunu açıklamaktadı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 bir smalldatetime değerini bir date değerine dönüştürmenin sonuçlarını göstermektedir.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @date date = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @date AS 'date';
--Result
--@smalldatetime          date
------------------------- ----------
--1955-12-13 12:43:00     1955-12-13
--
--(1 row(s) affected)
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @date date = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @date AS 'date';
--Result
--@smalldatetime          date
------------------------- ----------
--1955-12-13 12:43:00     1955-12-13
--
--(1 row(s) affected)

time(n)

Saat, dakika ve saniye kopyalanır. Kesirli saniyeler 0'a ayarlanır.

Aşağıdaki kod bir smalldatetime değerini bir time(4) değerine dönüştürmenin sonuçlarını göstermektedir.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @time time(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @time AS 'time';
--Result
--@smalldatetime          time
------------------------- -------------
--1955-12-13 12:43:00     12:43:00.0000
--
--(1 row(s) affected)
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @time time(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @time AS 'time';
--Result
--@smalldatetime          time
------------------------- -------------
--1955-12-13 12:43:00     12:43:00.0000
--
--(1 row(s) affected)

datetime

smalldatetime değeri datetime değerine kopyalanır. Kesirli saniyeler 0'a ayarlanır.

Aşağıdaki kod bir smalldatetime değerini bir datetime değerine dönüştürmenin sonuçlarını göstermektedir.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime datetime = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime AS 'datetime';
--Result
--@smalldatetime          datetime
------------------------- -----------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.000
--
--(1 row(s) affected)
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime datetime = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime AS 'datetime';
--Result
--@smalldatetime          datetime
------------------------- -----------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.000
--
--(1 row(s) affected)

datetimeoffset(n)

smalldatetime değeri datetimeoffset(n) değerine kopyalanır. Kesirli saniyeler 0'a, saat dilimi uzaklığı ise +00:0'a ayarlanır.

Aşağıdaki kod bir smalldatetime değerini bir datetimeoffset(4) değerine dönüştürmenin sonuçlarını göstermektedir.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetimeoffset datetimeoffset(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetimeoffset AS 'datetimeoffset(4)';
--Result
--@smalldatetime          datetimeoffset(4)
------------------------- ------------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000 +00:0
--
--(1 row(s) affected)
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetimeoffset datetimeoffset(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetimeoffset AS 'datetimeoffset(4)';
--Result
--@smalldatetime          datetimeoffset(4)
------------------------- ------------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000 +00:0
--
--(1 row(s) affected)

datetime2(n)

smalldatetime değeri datetime2(n) değerine kopyalanır. Kesirli saniyeler 0'a ayarlanır.

Aşağıdaki kod bir smalldatetime değerini bir datetime2(4) değerine dönüştürmenin sonuçlarını göstermektedir.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime2 datetime2(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime2 AS ' datetime2(4)';
--Result
--@smalldatetime           datetime2(4)
------------------------- ------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000
--
--(1 row(s) affected)
DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime2 datetime2(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime2 AS ' datetime2(4)';
--Result
--@smalldatetime           datetime2(4)
------------------------- ------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000
--
--(1 row(s) affected)

Örnekler

A.Saniyeleri olan dize hazır değerlerini smalldatetime'a dönüştürme

Aşağıdaki örnek bir dize hazır değerindeki saniyelerin smalldatetime türüne dönüştürülmesini karşılaştırmaktadır.

SELECT 
     CAST('2007-05-08 12:35:29'     AS smalldatetime)
    ,CAST('2007-05-08 12:35:30'     AS smalldatetime)
    ,CAST('2007-05-08 12:59:59.998' AS smalldatetime);

SELECT 
     CAST('2007-05-08 12:35:29'     AS smalldatetime)
    ,CAST('2007-05-08 12:35:30'     AS smalldatetime)
    ,CAST('2007-05-08 12:59:59.998' AS smalldatetime);

Girdi

Çıktı

2007-05-08 12:35:29

2007-05-08 12:35:00

2007-05-08 12:35:30

2007-05-08 12:36:00

2007-05-08 12:59:59.998

2007-05-08 13:00:00

B.Tarih ve saat verilerini türlerini karşılaştırma

Aşağıdaki örnek bir dizeyi dönüştürmenin sonuçlarını her tarih ve saat veri türü ile karşılaştırmaktadı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';

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)