Vinnaren i pepparkakshustävlingen!
2012-02-07, 12:30
  #1
Medlem
mcnuggets avatar
Tjena!

Jag har helt enkelt en tabell där jag lagt in datum och tid i olika kolumner. Det jag vill göra är att via en SQL-fråga få ut alla datum som är inlagda i tabellen som går från dagens datum och framåt. Alla äldre datum ska inte visas.
Hur skulle en sådan fråga kunna se ut. Jag har försökt med:

select Datum from Tidtabell where Datum <= GETDATE();

Men det vill ju inte fungera då GETDATE() tar ut datetime och jag har endast lagt in datum och tid i olika kolumner.

Jag har även försökt med saker som jag hittat via andra forum, såsom:

select Datum from Tidtabell where Datum <= CONVERT(VARCHAR(10),GETDATE(),111);

Detta ska alltså ta ut endast datumet ur GETDATE(), men jag får det inte att fungera.
Någon som har ett tips på hur jag skulle kunna lösa detta?
Citera
2012-02-07, 12:36
  #2
Medlem
q2tz5s avatar
Vilken datatyp har kolumnen date?
Citera
2012-02-07, 12:38
  #3
Moderator
Protons avatar
Citat:
Ursprungligen postat av q2tz5
Vilken datatyp har kolumnen date?
Håller med helt och hållet, vilken datatyp har date och hur är den lagrad?

Det hade ju underlättat om du sagt att det var T-SQL du avsåg med...
Citera
2012-02-07, 12:39
  #4
Medlem
mcnuggets avatar
Citat:
Ursprungligen postat av q2tz5
Vilken datatyp har kolumnen date?

Den har datatypen "date".
Citera
2012-02-07, 12:43
  #5
Moderator
Protons avatar
Citat:
Ursprungligen postat av mcnugget
Den har datatypen "date".
Aha.

Med detta sagt presenterar jag härmed min lösning på problemet:

Kod:
SELECT Datum FROM Tidtabell WHERE CONVERT(VARCHAR(10),Datum,121) <= CONVERT(VARCHAR(10),GETDATE(), 121
Den där borde funka.
Citera
2012-02-07, 12:48
  #6
Medlem
mcnuggets avatar
Citat:
Ursprungligen postat av Proton
Aha.

Med detta sagt presenterar jag härmed min lösning på problemet:

Kod:
SELECT Datum FROM Tidtabell WHERE CONVERT(VARCHAR(10),Datum,121) <= CONVERT(VARCHAR(10),GETDATE(), 121
Den där borde funka.

Nja.. Det funkar inte riktigt. Själva frågan verkar funka på så sätt att inga felmeddelanden dyker upp. Men den får inte fram några datum ur tabellen. Tabellen som dyker upp när frågan körs är helt enkelt tom.. Men tabellen "tidtabell" innehåller många datum som är senare än dagens datum..
Citera
2012-02-07, 12:56
  #7
Moderator
Protons avatar
Citat:
Ursprungligen postat av mcnugget
Nja.. Det funkar inte riktigt. Själva frågan verkar funka på så sätt att inga felmeddelanden dyker upp. Men den får inte fram några datum ur tabellen. Tabellen som dyker upp när frågan körs är helt enkelt tom.. Men tabellen "tidtabell" innehåller många datum som är senare än dagens datum..
Då är det dags att börja dissekera frågan, för den ska funka, jag har använt den själv ett antal gånger, iaf på ett normalt formaterat datum-tid i sql server.

Fråga:
Vad får du ut för respektive svar av dessa två frågor:
Kod:
SELECT top 1 CONVERT(VARCHAR(10),Datum,121FROM Tidtabell 
Respektive
Kod:
SELECT CONVERT(VARCHAR(10),GETDATE(), 121
Ser de likadana ut, dvs verkar de ge ifrån sej nåt som går att jämföra rätt upp och ner?

Om detta verkar funka kan man ju gissa att du inte har några datum som stämmer in på villkoret <= dagens datum.

Har du provat att sortera datumen i tabellen och kolla om du skulle i teorin kunna få ut nåt svar? Kanske är så enkelt att du inte ens har nåt datum som är mindre än eller lika med dagens datum i den där tabellen?
__________________
Senast redigerad av Proton 2012-02-07 kl. 12:58.
Citera
2012-02-07, 13:10
  #8
Medlem
mcnuggets avatar
Citat:
Ursprungligen postat av Proton
Då är det dags att börja dissekera frågan, för den ska funka, jag har använt den själv ett antal gånger, iaf på ett normalt formaterat datum-tid i sql server.

Fråga:
Vad får du ut för respektive svar av dessa två frågor:
Kod:
SELECT top 1 CONVERT(VARCHAR(10),Datum,121FROM Tidtabell 
Respektive
Kod:
SELECT CONVERT(VARCHAR(10),GETDATE(), 121
Ser de likadana ut, dvs verkar de ge ifrån sej nåt som går att jämföra rätt upp och ner?

Om detta verkar funka kan man ju gissa att du inte har några datum som stämmer in på villkoret <= dagens datum.

Har du provat att sortera datumen i tabellen och kolla om du skulle i teorin kunna få ut nåt svar? Kanske är så enkelt att du inte ens har nåt datum som är mindre än eller lika med dagens datum i den där tabellen?

Som du sa, det var så enkelt att jag inte hade några datum som var mindre än eller lika med dagens datum i tabellen... Att man kan vara så korkad..
Det funkar i alla fall perfekt nu! Tack så mycket för hjälpen!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback