smalldatetime (Transact-SQL)

  • 07/22/2017
  • 4 minuuttia luettu
    • M
    • j
    • .

    • c
    • M
    • m
    • +4

Käytetään: SQL Server (kaikki tuetut versiot) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

Määrittää päivämäärän, joka yhdistetään kellonaikaan. Aika perustuu 24 tunnin vuorokauteen, jossa sekunnit ovat aina nolla (:00) ja jossa ei ole murtosekunteja.

Huomautus

Käytä time-, date-, datetime2- ja datetimeoffset-tietotyyppejä uutta työtä varten. Nämä tyypit ovat SQL-standardin mukaisia. Ne ovat paremmin siirrettävissä. time, datetime2 ja datetimeoffset tarjoavat enemmän sekuntitarkkuutta. datetimeoffset tarjoaa aikavyöhyketuen globaalisti käytettäville sovelluksille.

smalldatetime description

.

Property Value
Syntax smalldatetime
Käyttö DECLARE @MySmalldatetime smalldatetime
CREATE TABLE Table1 ( Column1 smalldatetime )
Default string literal formats
(used for down-level client)
Not applicable
Date range 1900-01-01 to 2079-06-06
January 1, 1900 – 6. kesäkuuta 2079
Aika-alue 00:00:00-23:59:59
2007-05-09 23:59:59 pyöristetään muotoon
2007-05-10 00:00:00:00
Elementtialueet VVVVV on neljä vuosilukua, jotka vaihtelevat vuodesta 1900 vuoteen 2079.
MM on kaksi numeroa, jotka vaihtelevat 01:n ja 12:n välillä ja jotka edustavat määritellyn vuoden kuukautta.
DD on kaksi numeroa, jotka vaihtelevat 01:n ja 31:n välillä kuukaudesta riippuen ja jotka edustavat määritellyn kuukauden päivää.
hh on kaksi numeroa, jotka vaihtelevat 00:n ja 23:n välillä ja jotka edustavat tuntia.
mm on kaksi numeroa, jotka vaihtelevat 00:n ja 59:n välillä ja jotka edustavat minuuttia.
ss on kaksi numeroa, jotka vaihtelevat 00:n ja 59:n välillä ja jotka edustavat sekuntia. Arvot, jotka ovat 29,998 sekuntia tai vähemmän, pyöristetään alaspäin lähimpään minuuttiin. Arvot, jotka ovat 29,999 sekuntia tai enemmän, pyöristetään ylöspäin lähimpään minuuttiin.
Merkin pituus 19 paikkaa maksimi
Tallennuskoko 4 tavua, kiinteä.
Tarkkuus Yksi minuutti
Ohjearvo 1900-01-01 00:00:00
Kalenteri Gregoriaaninen
(Ei sisällä koko vuosilukualuetta.)
Käyttäjä…määritetty sekunnin murto-osan tarkkuus Ei
Aikavyöhykeoffsetin tiedostaminen ja säilyttäminen Ei
Daylight saving aware No

ANSI- ja ISO 8601-yhteensopivuus

smalldatetime ei ole ANSI- tai ISO 8601-yhteensopiva.

Päiväys- ja aikatietojen muuntaminen

Kun muunnat päiväys- ja aikatietotyyppeihin, SQL Server hylkää kaikki arvot, joita se ei tunnista päivämääriksi tai kellonajaksi. Lisätietoja CAST- ja CONVERT-funktioiden käytöstä päiväys- ja aikatietojen kanssa on kohdassa CAST ja CONVERT (Transact-SQL).

Smalldatetime-tietojen muuntaminen muiksi päiväys- ja aikatyypeiksi

Tässä osassa kuvataan, mitä tapahtuu, kun smalldatetime-tietotyyppi muunnetaan muiksi päiväys- ja aikatietotyypeiksi.

Muunnoksessa päivämääräksi kopioidaan vuosiluku (year), kuukausiluku (month) ja vuorokausi (day). Seuraavassa koodissa näytetään, miten smalldatetime-arvo muunnetaan date-arvoksi.

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) 

Kun muunnos on time(n)-arvoksi, kopioidaan tunnit, minuutit ja sekunnit. Murtosekunnit asetetaan arvoon 0. Seuraavassa koodissa näkyy smalldatetime-arvon muuntamisen tulos time(4)-arvoksi.

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) 

Kun muunnos on datetime-arvoksi, smalldatetime-arvo kopioidaan datetime-arvoon. Murtosekunnit asetetaan arvoon 0. Seuraavassa koodissa näkyy tulos, kun smalldatetime-arvo muunnetaan datetime-arvoksi.

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) 

Muunnettaessa datetimeoffset(n)-arvoksi smalldatetime-arvo kopioidaan datetimeoffset(n)-arvoon. Murtosekunnit asetetaan arvoon 0 ja aikavyöhykeoffset asetetaan arvoon +00:0. Seuraavassa koodissa näkyy smalldatetime-arvon muuntamisen tulokset datetimeoffset(4)-arvoksi.

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) 

Muunnettaessa datetime2(n)-arvoksi smalldatetime-arvo kopioidaan datetime2(n)-arvoon. Murtosekunnit asetetaan arvoon 0. Seuraavassa koodissa näkyy smalldatetime-arvon muuntamisen tulos datetime2(4)-arvoksi.

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) 

Examples

A. Sekunteja sisältävien merkkijonokirjainten muuntaminen smalldatetime

Seuraavassa esimerkissä verrataan merkkijonokirjaimissa olevien sekuntien muuntamista smalldatetime-arvoksi.

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); 
Input Output
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. Päiväys- ja aikatietotyyppien vertailu

Seuraavassa esimerkissä verrataan merkkijonon heittämisen tuloksia kuhunkin päiväys- ja aikatietotyyppiin.

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

Vastaa

Sähköpostiosoitettasi ei julkaista.