sql >> Databáze >  >> RDS >> Sqlserver

Příklady převodu „smalldatetime“ na „datetime“ v SQL Server (T-SQL)

Tento článek obsahuje příklady převodu smalldatetime hodnotu na datum a čas hodnotu v SQL Server.

Když převedete smalldatetime hodnotu na datetime , hodiny a minuty se zkopírují a sekundy a zlomkové sekundy se nastaví na 0 .

Příklad 1 – Explicitní konverze pomocí CAST()

Zde je příklad explicitní konverze. V tomto případě používám CAST() funkce přímo v SELECT příkaz explicitně převést z smalldatetime na datum a čas .

DECLARE @thesmalldatetime smalldatetimeSET @thesmalldatetime ='2031-03-25 11:15:29'SELECT @thesmalldatetime JAKO 'thesmalldatetime', CAST(@thesmalldatetime AS datetime) JAKO 'datetime';

Výsledek:

+---------------------+------------------------ -+| thesmalldatetime | datum a čas ||---------------------+------------------------- || 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 |+---------------------+---------------- ---------+

Za prvé, můžeme vidět, že thesmalldatetime hodnota používá 00 pro komponentu sekund, i když jsme ji výslovně nastavili na 29 . Je to proto, že při použití thesmalldatetime datový typ, sekundy jsou vždy nula (a bez zlomkových sekund).

Když tedy převedeme hodnotu na datetime , hodnota sekund (a zlomkové sekundy) jsou nastaveny na nulu. Kdybychom právě přiřadili původní hodnotu datetime za prvé, sekundy by zůstaly nedotčené:

DECLARE @thedatetime datetimeSET @thedatetime ='2031-03-25 11:15:29'SELECT @thedatetime AS 'thedatetime';

Výsledek:

+-------------------------+| thedatetime ||-------------------------|| 2031-03-25 11:15:29.000 |+-------------------------+

Nejen, že by sekundy zůstaly nedotčené, ale také jakékoli zlomkové sekundy by zůstaly nedotčené (ale pouze do stupnice 3):

DECLARE @thedatetime datetimeSET @thedatetime ='2031-03-25 11:15:29.123'SELECT @thedatetime AS 'thedatetime';

Výsledek:

+-------------------------+| thedatetime ||-------------------------|| 2031-03-25 11:15:29.123 |+-------------------------+

Příklad 2 – Zaokrouhlení

Co se stane, když komponentu sekund nastavíme na vyšší hodnotu, než ji přiřadíme k smalldatetime datový typ.

DECLARE @thesmalldatetime smalldatetimeSET @thesmalldatetime ='2031-03-25 11:15:31'SELECT @thesmalldatetime JAKO 'thesmalldatetime', CAST(@thesmalldatetime AS datetime) JAKO 'datetime';

Výsledek:

+---------------------+------------------------ -+| thesmalldatetime | datum a čas ||---------------------+------------------------- || 2031-03-25 11:16:00 | 2031-03-25 11:16:00.000 |+---------------------+---------------- ---------+

Takže složka minut je nyní zaokrouhlena nahoru na další minutu.

Příklad 3 – Explicitní převod pomocí CONVERT()

Toto je stejné jako v prvním příkladu, ale tentokrát používám CONVERT() funkce namísto CAST() .

DECLARE @thesmalldatetime smalldatetimeSET @thesmalldatetime ='2031-03-25 11:15:29'SELECT @thesmalldatetime AS 'thesmalldatetime', CONVERT(datetime, @thesmalldatetime) AS 'datetime';

Výsledek:

+---------------------+------------------------ -+| thesmalldatetime | datum a čas ||---------------------+------------------------- || 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 |+---------------------+---------------- ---------+

Příklad 4 – Implicitní konverze

Zde je příklad provedení stejné věci, ale s použitím implicitní konverze typu.

DECLARE @thesmalldatetime smalldatetime, @thedatetime datetimeSET @thesmalldatetime ='2031-03-25 11:15:29'SET @thedatetime =@thesmalldatetimeSELECT @thesmalldatetime AS 'thesmalldatetime', @thedatetime AS 'pre>datetime';
 Výsledek:

+---------------------+------------------------ -+| thesmalldatetime | datum a čas ||---------------------+------------------------- || 2031-03-25 11:15:00 | 2031-03-25 11:15:00.000 |+---------------------+---------------- ---------+

Dostaneme tedy stejný výsledek bez ohledu na to, zda se jedná o explicitní nebo implicitní konverzi.

Jedná se o implicitní převod, protože k jeho explicitnímu převodu nepoužíváme konverzní funkci. Jednoduše přiřadíme hodnotu z proměnné jednoho datového typu k proměnné jiného datového typu. V tomto případě SQL Server provede implicitní převod za scénou, když se pokusíme přiřadit smalldatetime hodnotu na datum a čas proměnná.


  1. Přidejte znak měny £, $ do určitých polí ORACLE

  2. Jak používat EXISTS Logical Operator v SQL Server - SQL Server / TSQL výukový program, část 125

  3. Rails Console vyhledá uživatele podle řady ID

  4. Jak vytvořím generátor řádků v MySQL?