webForumDet fria alternativet

Ta bort tid från DateTime

4 svar · 1 034 visningar · startad av lilja

liljaMedlem sedan juli 20041 183 inlägg
#1

Jag försöker göra en Distinct på ett DateTime fält och vill ha per dag men då det finns timmar och minuter i fälet får jag ibland flera per dag. Hur löser jag detta på bästa sätt? Jag har hittat en fullösning som först konverterar till sträng och sedan tillbaka till datum igen men det borde finnas något enklare typ ShortDate som kastar bort tiden??

CAST(CAST(YEAR(O.StartDate) AS CHAR(4)) + '-' + CAST(MONTH(O.StartDate) AS CHAR(2)) + '-' + CAST(DAY(O.StartDate) AS CHAR(2)) AS DATETIME)

Detta funkar som sagt men jag vill hellre skriva typ:

DATETIME(O.StartDate, ShortDate)

och då få ut ett datetime på typen YYYY-MM-DD 00:00:00.

Jag kan inte påverka datan jag får in då det är ett externt affärssystem...

@ndersMedlem sedan juni 200032 969 inlägg
#2

Kan du berätta vilken dbms du använder åtminstone? MySQL?

liljaMedlem sedan juli 20041 183 inlägg
#3

MSSQL 2005

@ndersMedlem sedan juni 200032 969 inlägg
#4

Se under "Extended Date Formats" här. Du kan ju göra någon fin funktion (udf) för det så slipper det bli så kladdigt.

liljaMedlem sedan juli 20041 183 inlägg
#5

Danke, tråkigt bara att jag testade en snarlik grej fast det inte funkade. Slutgiltiga svaret blir:

CAST(CONVERT(VARCHAR(10),StartDate, 120) AS DATETIME)
128 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)