Har problem att hämta ut lite data från en databas. Alla värden ligger snyggt i databasen med datum i textformat åååå-mm-dd. Jag vill nu kunna hämta hämta ut det via en SP, och allt lyckas utom där jag villkorar den. Ligger datumen verkligen lagrade i textformat? Det skulle jag avråda ifrån. Använd istället någon av datatyperna SMALLDATETIME eller DATETIME. Då kan du använda din logik, men gör en konvertering till det format du vill jämföra med först. Tack för hjälpen. Får titta på vilka lösningar jag kan använda mig av. Fast om datumen lagras som smalldatetime eller datetime (vilket de absolut ska göras, jag håller med fullständigt) så bör ju dock logiken för hur villkoren byggs upp ändras. Att konvertera kolumndatan till varchar och sedan jämföra med like gör ju att det inte blir SARGable, vilket leder till dålig prestanda eftersom inte index kan användas (plus att extra CPU-cykler behövs för konverteringen). Villkoret borde istället vara något i stil med:Datagrid stored procedure
SP ser ut så här:
<code>
CREATE PROCEDURE dbo.GetStat
(
@Datum Varchar(20)
)
AS
Select * From statistik
Where [Datum] LIKE '%" & @Datum & "%'
</code>
Jag har testat datum och den ligger i rätt format t.ex. 2004-11. Jag vill då att datagriden hämtar ut all data där datum börjar på 2004-11.
Någon som kan hjälpa?Sv: Datagrid stored procedure
<CODE>
Select * From statistik
Where CONVERT(VARCHAR(19), [Datum], 120) LIKE '%' & @Datum & '%'
</CODE>
Kolla också dina apostrofer/citationstecken. De såg inte ut att vara helt rätt.
/PelleSv:Datagrid stored procedure
Sv:Datagrid stored procedure
<CODE>
WHERE [Datum] BETWEEN '2004-11-01 00:00:00' AND '2004-11-30 23:59:59'
</CODE>