sql >> Databasteknik >  >> RDS >> Sqlserver

Konvertera 'datetime' till 'date' i SQL Server (T-SQL-exempel)

Den här artikeln innehåller exempel på hur du konverterar en datumtid värde till ett datum värde i SQL Server.

Den uppenbara konsekvensen av att konvertera en datetime värde till datum är att du förlorar tidsdelen. En fördel är dock att du minskar lagringsstorleken från 8 byte ner till 3 byte. Hur som helst, du skulle bara göra den här konverteringen om du inte behöver tidsdelen.

datetime datatypen inkluderar datum och tid, med en 3-siffrig del av bråkdelssekunder. Dess noggrannhet är avrundad till steg om 0,000, 0,003 eller 0,007 sekunder.

Men datumet datatypen har en noggrannhet på 1 dag (och den inkluderar inte tiden, som nämnts).

Exempel 1 – Implicit konvertering

Här är ett exempel på en implicit konvertering mellan datetime och datum .

DECLARE 
  @thedatetime datetime, 
  @thedate date;
SET @thedatetime = '2025-05-21 10:15:30.123';
SET @thedate = @thedatetime;
SELECT 
  @thedatetime AS 'datetime',
  @thedate AS 'date';

Resultat:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+

Detta är en implicit konvertering eftersom vi inte använder en konverteringsfunktion (som de nedan) för att explicit konvertera den. I det här fallet utför SQL Server en implicit konvertering bakom kulisserna när vi försöker tilldela datetime värde till ett datum variabel.

I det här exemplet kan vi se att datumet värdet inkluderar endast datumet (utan tidskomponenten).

Exempel 2 – Explicit konvertering med CAST()

Här är ett exempel på en explicit konvertering. I det här fallet använder jag CAST() funktion direkt inom SELECT uttalande för att uttryckligen konvertera mellan datetime och datum .

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SELECT 
  @thedatetime AS 'datetime',
  CAST(@thedatetime AS date) AS 'date';

Resultat:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+

Exempel 3 – Explicit konvertering med CONVERT()

Här är ett exempel på en explicit konvertering med CONVERT() funktion istället för CAST() .

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SELECT 
  @thedatetime AS 'datetime',
  CONVERT(date, @thedatetime) AS 'date';

Resultat:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+

  1. Hur flyttar jag min befintliga rails-app till heroku? (sqlite till postgres)

  2. Virtuella kolumner och funktionella index

  3. PostgreSQL:Varför kan psql inte ansluta till servern?

  4. T-SQL:Hur använder man parametrar i dynamisk SQL?