2010-11-24 5 views
1

Je souhaite créer une procédure stockée qui peut récupérer le datetime inférieur ou supérieur à la date actuelle sys .. dans ma table, startdate et enddate a la valeur « datetime »procédure stockée SQL pour obtenir Date et heure

Comment obtenir des détails entre startdate et enddate dans une procédure stockée SQL?

merci à l'avance

+1

Il y a une infinité de dates et heures qui sont moins ou supérieure à sysdate. Je ne suis pas sûr de ce que vous essayez de faire. Pouvez-vous expliquer un peu plus? –

+0

Quelle base de données utilisez-vous? –

+0

salut iam en utilisant deux dates .. startdate et enddate défini comme smalldatetime – Ganesh

Répondre

3

Compte tenu de cette définition de la table

CREATE TABLE [dbo].[Dates](
    [StartDate] [datetime] NOT NULL, 
    [EndDate] [datetime] NOT NULL 
) 

Je suppose que si vous passez une date que vous voulez savoir quelles lignes satisfont à la condition: startDate < Date < EndDate. Si tel est le cas, vous pouvez utiliser la requête:

select * 
from Dates 
where convert(datetime, '20/12/2010', 103) between StartDate and EndDate; 

Une procédure stockée pourrait ressembler à:

ALTER PROCEDURE [dbo].[GetDataWithinRange] 
    @p_Date datetime 
AS 
BEGIN 
    SELECT * 
    from Dates 
    where @p_Date between StartDate and EndDate; 
END 

2

On dirait que vous essayez de filtrer les données dans une table basée sur une plage de dates. Si tel est le cas (je vais avoir du mal à comprendre votre question), vous feriez quelque chose comme ceci:

select * 
from  MyTable m 
where  m.Date between @DateFrom and @DateTo 

Maintenant, je suppose que vos dates de filtrage sont mis dans les variables @DateFrom et @DateTo.

+0

avez-vous testé la réponse, avant de poster la réponse? – none

+0

non. Je ne voulais pas allumer SQL Server sur mon netbook. J'aimerais penser que je fais assez ce type de requête pour ne pas avoir à tester cela dans le but de donner une réponse pertinente à la question. –

3

par exemple:

SELECT * 
FROM MyTable 
WHERE DATEDIFF ('d',mydatefield ,getdate()) < 3 

obtient dans les 3 jours

+0

vous menez où datediff ('d', mydatefield, getdate()) entre -3 et 3 – none

0
There are two things: 

1> To get todays date we can write 
SET @today_date = GETTDDT(); 

2> To get Current time we can us ethe following query: 

SET @today_time = (SELECT            
       digits(cast(hour(current time) as decimal(2,0)))|| 
       digits(cast(minute(current time) as decimal(2,0)))|| 
       digits(cast(second(current time) as decimal(2,0))) 
       FROM sysibm/sysdummy1);