webForumDet fria alternativet

Ta bort tid från datum i sql?

Databaser & SQL

5 svar · 2 339 visningar · startad av butiko

Medlem sedan jan. 2007152 inlägg
Frågan#1

Sliter mitt hår för att komma på något fiffigt sätt att plocka bort tiden från en datetime i sql. Har visserligen lyckats men lösningen är en riktig fuling så jag undrar om det finns någon som har något bättre sätt? Så här har jag gjort:

SELECT 
substring(convert(varchar(20), getdate(), 112),0,5) + '-' +
substring(convert(varchar(20), getdate(), 112),5,7) + '-' +
substring(convert(varchar(20), getdate(), 112),7,9)

Anledningen till substrängen är att jag inte lyckas få datumet att följa svensk standard, dvs 2008-01-01 (det närmsta jag kommit är 20080101 och det är de jag använder här ovan men då måste jag ju manuellt stoppa in bindestreck). Jag kan heller inte göra en substring direkt på ett datum så jag måste konvertera det först och jag lyckas inte konvertera det utan att ändra datumformatet!

Nä, fråga inte varför jag överhuvudtaget ska göra så här... :p

Medlem sedan juni 200032 967 inlägg
#2

Du borde slita ditt hår lite mer, då kanske du skulle hitta sökfunktionen på wF - eller bara lyckats kika lite längre ner i trådlistan. ;)

http://www.webforum.nu/showthread.php?t=164775

Medlem sedan jan. 2007152 inlägg
#3

Åhå... :r Efter lite omskrivning så blev lösningen så här snajsig:

SUBSTRING(CAST(CONVERT(VARCHAR(10),getdate(), 120) AS NVARCHAR),0,11)
Medlem sedan mars 20034 471 inlägg
#4

Vad står 120 för i det svaret???

Medlem sedan juni 200032 967 inlägg
#5

120 är ett datumformat som ser ut sisomså: YYYY-MM-DD HH:MI:SS(24h)

Du kan läsa mer om datumformat i SQL Server här.

mvh

Medlem sedan mars 20034 471 inlägg
#6

Tack, @nders! :birp

252 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)