webForumDet fria alternativet

Tids-problem i SQL-server 7

12 svar · 294 visningar · startad av OveRRidE

OveRRidEMedlem sedan feb. 200112 078 inlägg
#1

Jag försöker få in en tid i en kolumn i SQL-server 7. Kolumnen är av typen Datetime och tiden jag försöker få in har följande mönster; HH.MM, alltså ex. 17.30.

Problemet är att det blir 1901-01-01 17.30. Om formatet på kolumnen är Smalldatetime blir det fel om det ens funkar.

Hur gör jag? Jag vill bara ha in tiden ju. :)

OveRRidEMedlem sedan feb. 200112 078 inlägg
#2

Dock, om jag använder timevalue() i vbscript på värdet ur kolumnen så blir det ju rätt. Men det finns ju fortfarande ett datum i tidskolumnen.

agneta_rungMedlem sedan juli 2002145 inlägg
#3

Är kolumnen av typen DateTime så får du oundvikligen ett datum med... Behöver du kunna räkna på tiden? Annars är det väl ett alternativ att lagra den som en sträng.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#4

Jag behöver kunna 'räkna' tid, ja.

Jag skall göra en koll som hämtar vissa poster som ligger inom ett visst tidspann med hjälp av datum och tid.

agneta_rungMedlem sedan juli 2002145 inlägg
#5

Då använder du ett datum alltså?! Varför lagrar du inte det i samma kolumn då? För övrigt ger ju en "större än"- eller "mindre än"-jämförelse samma resultat för en sträng i det här fallet under förutsättning att du anger tiden enligt mönstret HH.MM, dvs 01.23 och 23.56...

OveRRidEMedlem sedan feb. 200112 078 inlägg
#6

Ja, jag använder ett datum. Anledningen till att jag inte använder en kolumn är att det inte är byggt så från början. :)

Men det låter klart lockande att göra så visserligen.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#7

Mer strul:

SQL = "Select * From notes
INNER JOIN costumers
   ON notes.costumerID = costumers.id
Where left(appTime,10) = '" & appTime & "'
AND notes.UserId = " & session("id") & "
ORDER BY notes.id DESC"

Värdet i kolumnen appTime är '2002-11-01 13:00:00' och i formatet Datetime. Därför klipper jag appTime 10 från vänster, men det verkar inte som om den vill. Värdet i variabeln appTime är '2002-11-01'.

agneta_rungMedlem sedan juli 2002145 inlägg
#8

Jag skulle tro att du kan använda CONVERT-funktionen så här (är hemma med flunsan och kan inte testa... x( )

SQL = "Select * From notes
INNER JOIN costumers
   ON notes.costumerID = costumers.id
WHERE CONVERT(varchar, appTime, 103) = '" & appTime & "'
AND notes.UserId = " & session("id") & "
ORDER BY notes.id DESC"
OveRRidEMedlem sedan feb. 200112 078 inlägg
#9

Mjo, jag vet dock inte om CONVERT() fungerar i SQL Server 7, jag tror det är CAST() som gäller i 7:an.

Jag har testat såhär och skrev ut rs("datumet").

SQL = "Select *, left(cast(appTime as datetime),10) as datumet From notes"

Det blev 'jan 1 190 ', vilket bevisar vilken form datumet är i. :)

Hur gör jag för att få formet YYYY-MM-DD på den?

LarsGMedlem sedan dec. 200012 464 inlägg
#10

Convert har funnits längre än Cast.

CONVERT(varchar, appTime, 8) => hh:mm:ss

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/tsqlref/ts_ca-co_5t9v.asp

Jag såg ingen som enbart gav yyyy-mm-dd

Du kan ju göra convert först och substring sedan.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#11

Convert har funnits längre än Cast.

Där ser man. :o Jag trodde det var tvärt om.

Jag såg ingen som enbart gav yyyy-mm-dd

Är inte det ganska dåligt? Jag menar, hur arbetar man annars ordentligt med datum?

Du kan ju göra convert först och substring sedan.

Mm. Men ur vilken form och hur?

LarsGMedlem sedan dec. 200012 464 inlägg
#12

Är inte det ganska dåligt? Jag menar, hur arbetar man annars ordentligt med datum?

Jo, jag håller med. Det finns specifierat i SQL hur det skall fungera med olika datatyper date,time och timestamp (med och utan tidszoner). Det finns även en datatyp för att lagra tidsintervall. Datetime i SQL server motsvarar (ungefär) timestamp without time zone i SQL.

substring(convert(varchar,datetimeColumn,21),1,10)
OveRRidEMedlem sedan feb. 200112 078 inlägg
#13

Ok. :)

Sådärja, det funkade ju lite bättre. :) Tack!

256 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
130 ms — hämta forumlista (db)
124 ms — hämta statistik (db)
129 ms — hämta tråd, inlägg och bilagor (db)