Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    residenza
    Svizzera
    Messaggi
    32

    [MS SQL SERVER 2012] Problemi con store procedure e limiti date

    Ciao a tutti ho una store che mi deve estrarre dei turni fatti da una persona in un mese.

    La tabella è così composta:

    Data | Collaboratore | Data e ora inizio | Data e ora fine

    La query è la seguente:

    SELECT Data, COllaboratore
    FROM mia.tabella
    WHERE data BETWEEN dataInizio AND dataFine

    Il problema per cui vi scrivo è che questa query non estrai tutti i turni, infatti se voglio estrarre i turni dal 01.12.2014 al 31.12.14 non mi include i turni che iniziano il 31.12.14 alle 20.00 e finisce il 01.01.15 alle 08.00.

    Nella store il dataINizio e dataFIne sono in formato date, mentre data è in formato datetime.

    COsa sbaglio ? Come posso fare in modo che mi estragga tutti i dati in modo corretto?

    Ciao e grazie

    Mauro

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da mau79 Visualizza il messaggio
    Il problema per cui vi scrivo è che questa query non estrai tutti i turni, infatti se voglio estrarre i turni dal 01.12.2014 al 31.12.14 non mi include i turni che iniziano il 31.12.14 alle 20.00 e ...........
    Esattissimo dal 01.12.2014 al 31.12.14 ( se non specifichi orari )
    significa dal 01.12.2014 00:00:00 al 31.12.14 00:00:00
    quindi 31.12.14 alle 20.00 è fuori dal tuo periodo

    devi sommare un giorno alla tua data di fine



    Quote Originariamente inviata da mau79 Visualizza il messaggio
    ..... WHERE data BETWEEN dataInizio AND dataFine .......
    di quei 3 campi/parametri che quoto non riesco a capire cosa sia parametro e cosa sia campo

    facci un classico esempio con pochi record e quello che vuoi ottenere


    .

  3. #3
    SELECT Data_inizio_turno, Data_dine_turno, COllaboratore
    FROM mia.tabella
    WHERE MONTH(data_inizio_turno)=il_mese_che_vuoi_tu AND YEAR(data_inizio_turno)=l_anno_che_vuoi_tu





  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2006
    residenza
    Svizzera
    Messaggi
    32
    Quote Originariamente inviata da nman Visualizza il messaggio
    Esattissimo dal 01.12.2014 al 31.12.14 ( se non specifichi orari )
    significa dal 01.12.2014 00:00:00 al 31.12.14 00:00:00
    quindi 31.12.14 alle 20.00 è fuori dal tuo periodo

    devi sommare un giorno alla tua data di fine




    di quei 3 campi/parametri che quoto non riesco a capire cosa sia parametro e cosa sia campo

    facci un classico esempio con pochi record e quello che vuoi ottenere


    .
    data è un campo, mentre datainizio e datafine avrei dovuto scriverle così @datainizio e @datafine che sono i parametri

    In pratica la tabella è così:

    Capture.PNG

    E io voglio che dalla query impostando come limiti il 01.12.14 e 31.12.14 mi estragga tutti i turni che iniziano in dicembre
    Ultima modifica di mau79; 28-12-2014 a 14:17

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    residenza
    Svizzera
    Messaggi
    32
    Grazie della tua suggestione, ma scusami la mia ignoranza ma nei due parametri che mi hai indicato:

    -il_mese_che_vuoi_tu
    -l_anno_che_vuoi_tu

    Che cosa devo inserire? Il nome del mese in inglese? In italiano? Il numero del mese?

    Scusami ancora per la mia stupida domanda.

    Risolto grazie ancora per la suggestione e buon anno a te
    Ultima modifica di mau79; 28-12-2014 a 14:24

  6. #6
    Quote Originariamente inviata da mau79 Visualizza il messaggio
    Risolto grazie ancora per la suggestione e buon anno a te
    Facci vedere come hai risolto, così aiutiamo qualcuno che dovesse avere il tuo stesso problema.

    Buon Anno!

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2006
    residenza
    Svizzera
    Messaggi
    32
    Quote Originariamente inviata da optime Visualizza il messaggio
    Facci vedere come hai risolto, così aiutiamo qualcuno che dovesse avere il tuo stesso problema.

    Buon Anno!
    La store procedure è la seguente:

    codice:
    CREATE PROCEDURE [prova].[usp_get_calendar_XXX_period] 
    
    
    
        @month int, 
        @year int
    
    AS
    
    BEGIN
    
        SET NOCOUNT ON;
    
    SELECT ID_collaboratore, Sigla, Cognome, Nome,SUM(Datepart(hour,([endDate]-[beginDate]))) as Ore
    ,sum(Datepart(minute,([endDate]-[beginDate]))) as minuti
     FROM [prova].[view_getPicchetti]
     WHERE (MONTH([beginDate])=@month AND YEAR([beginDate])=@year)
     GROUP BY ID_collaboratore, Sigla, Cognome, Nome

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.