Avatar billede Lars Søndergaard Nybegynder
21. februar 2003 - 11:43 Der er 3 kommentarer og
2 løsninger

T-SQL

Jeg har et par småting som driller i forbindelse med en SP.. jeg har aldrig før arbejdet med T-SQl, så det er min første SP og jeg fatter ikke SÅ meget af det :-(

MIn sp ser således ud:

###########################################################

CREATE PROCEDURE [DBO].[sp_Validate_Login]
(
@intMobilnr INT,
@strPassword VARCHAR(50)
)

AS

--Set @dateTidspunkt = convert(Datetime, getdate(), 110)

If exists (SELECT * FROM [TBL_Passwords] WHERE [password] = @strPassword AND [mobilnr] = @intMobilnr AND [tidspunkt] > getdate())
return(1)
else
return(0)
GO

###########################################################

godt så.. det der IKKE virker er: [tidspunkt] > getdate() .. for selvom [tidspunkt] IKKE er større end getDate() returneres 1

I [TBL_Password] har jeg en kolonne [tidspunkt] (21-02-2003 11:03:00) som er smalldatetime og jeg har en kolonne [ttl] som er en int.

Når et password indsættes i [TBL_Passwords] indsættes [tidspunkt] automatisk med getDate() og jeg vil så i SELECT sætningen checke på om:

[tidspunkt] + [ttl] > NUVÆRENDE_TIDSPUNKT .. altså getData()

Jeg kan heller ikke få fat på [ttl] så derfor lægges det ikke til [tidspunkt] I SELECT

Håber der sidder en ekspert og keder sig ??

mvh subtile
Avatar billede Lars Søndergaard Nybegynder
21. februar 2003 - 12:28 #1
Nu er jeg kommet lidt videre.. nu ser min sp således ud:

CREATE PROCEDURE [DBO].[sp_Validate_Login]
(
@intMobilnr INT,
@strPassword VARCHAR(50)
)

AS

DECLARE @intMinut        INT

--DECLARE @dateTidspunkt        Minute
--Set @dateTidspunkt = convert(Datetime, getdate(), 110)

Set @intMinut = (SELECT [ttl] FROM [TBL_Passwords] WHERE [password] = @strPassword AND [mobilnr] = @intMobilnr)

If exists (SELECT * FROM [TBL_Passwords] WHERE [password] = @strPassword AND [mobilnr] = @intMobilnr AND [tidspunkt] + @intMinut > getdate())
    return(1)
else
    return(0)
GO

nu mangler jeg vist bare at konvertere @intMinut til at være minutter ??? HOW ?
Avatar billede techhouse Nybegynder
21. februar 2003 - 12:57 #2
jeg tror at du kan funktion datediff(minute,[tidspunkt],getdate()) som giver dig forskellen mellem 2 tider. I dette tilfælde minutter.

så din select vil være
SELECT * FROM [TBL_Passwords] WHERE [password] = @strPassword AND [mobilnr] = @intMobilnr AND datediff(minute,[tidspunkt],getdate()) > 110

/Thomas
Avatar billede Lars Søndergaard Nybegynder
21. februar 2003 - 13:19 #3
ehm joh men jeg skal checke på om [tidspunkt] + minutter > getDate()  ... tallet 110 er udkommenteret.. det er blot en datokode for dd-mm-yyyy
Avatar billede Lars Søndergaard Nybegynder
21. februar 2003 - 13:57 #4
Sådan her skal det se ud...

CREATE PROCEDURE [DBO].[sp_Validate_Login]
(
@intMobilnr INT,
@strPassword VARCHAR(50)
)

AS

DECLARE @intMinut    INT

Set @intMinut = (SELECT [ttl] FROM [TBL_Passwords] WHERE [password] = @strPassword AND [mobilnr] = @intMobilnr)

If exists (SELECT * FROM [TBL_Passwords] WHERE [password] = @strPassword AND [mobilnr] = @intMobilnr AND DATEADD(minute,@intMinut,[tidspunkt]) > getdate())
    return(1)
else
    return(0)
GO
Avatar billede Lars Søndergaard Nybegynder
21. februar 2003 - 13:58 #5
som brødre vi dele
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester