09. oktober 2006 - 15:28
Der er
12 kommentarer og 1 løsning
Sammenlign 2 kolonner med fn now()
Hej Experten Jeg har et mindre problem. Jeg har Dato og Tid i hver sin tabel, og jeg skal hente rækkerne ud hvis Dato + Tid > Nu. Kan det lade sig gøre? Altså noget i stil med "SELECT * FROM mintabel WHERE Dato&Tid > {fn Now()}"
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
09. oktober 2006 - 15:55
#1
Du kan eventuelt prøve at konvertere din tekststreng til datoformat således: Cast(Dato + Tid datetime) > Now()
09. oktober 2006 - 15:57
#2
Et eksempel på konvertere tekststrenge til datoformat: declare @Dato as varchar(20) declare @Tid as varchar(20) set @Dato = '2006-01-01' set @Tid = '10:12:23' select cast(@Dato + ' ' + @Tid as datetime)
09. oktober 2006 - 16:08
#3
Hej Lorent. Hvordan vil men egentlige SQL streng så komme til at se ud? Det ska helst laves uden Paremetre, altså ren SQL
09. oktober 2006 - 16:15
#4
Måske sådan her... SELECT * FROM mintabel WHERE cast(datofelt & ' ' & tidfelt as datetime) > CURRENT_TIMESTAMP Bruger selv normalt CURRENT_TIMESTAMP, men vil tro du også kan sætte NOW ind samme sted. Måske er det nødvendigt at lave dato- og tid-felterne om til tekst først: SELECT * FROM mintabel WHERE cast(cast(datofelt as varchar) & ' ' & cast(tidfelt as varchar) as datetime) > CURRENT_TIMESTAMP
09. oktober 2006 - 16:16
#5
Hmm... måske skal &tegnene være +tegn i stedet for.
09. oktober 2006 - 16:19
#6
SELECT * FROM mintabel WHERE cast(@Dato + ' ' + @Tid as datetime) > now() Nu kender jeg ikke dit format på dato og tid. Passer det med det format jeg har vist?
09. oktober 2006 - 16:22
#7
Unskyld: SELECT * FROM mintabel WHERE cast(@Dato + ' ' + @Tid as datetime) > getdate()
09. oktober 2006 - 16:24
#8
Jeg får fejlen: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid operator for data type. Operator equals boolean AND, type equals nvarchar. Når jeg bruger cast(dato + ' ' + tid as datetime) > CURRENT_TIMESTAMP De to kolonner er begge nvarchar()
09. oktober 2006 - 16:31
#9
Hej Pierre. Det ser ud til at virke. jeg brugte SELECT * FROM mintabel WHERE cast(cast(datofelt as varchar) + ' ' + cast(tidfelt as varchar) as datetime) > CURRENT_TIMESTAMP Men det kræver at jeg bruger Amerikans dato.. kan jeg ændre det? da dataen bliver sat ind i DD/MM/YYYY format og ikke YYYY/MM/YY
09. oktober 2006 - 16:32
#10
Du får self point :) men hvis du kan hjælpe mig med det sidste spørgsmål så bliver jeg glad :)
09. oktober 2006 - 16:33
#11
Jeg får den samme fejlmedelelse, hvis jeg bruger & i stedet for + Er du sikker på at du ikke har brugt cast(dato & ' ' & tid as datetime) > CURRENT_TIMESTAMP?
09. oktober 2006 - 16:38
#12
Ja. jeg bruger: cast(cast(dato as varchar) + ' ' + cast(tid as varchar) as datetime) < CURRENT_TIMESTAMP;" Og det virker fint. dato og tid er nvarchar, og datofeltet har format YYYY-MM-DD
11. oktober 2006 - 08:56
#13
Mener du kan sætte et parameter på CAST, så den afleverer i et andet format. Prøv at læse i BOOKS ONLINE (jeg har dem ikke lige her hvor jeg sidder nu, så jeg kan desværre ikke hjælpe grundigere).
Computerworld tilbyder specialiserede kurser i database-management