Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    clausola WHERE per DATA ultimo mese

    come faccio a inswerire una WHERE di data in questa query ?

    codice:
    strSQL="SELECT * FROM products where new='1' ORDER BY tip_IT DESC"
    ovvero che mi selezioni sono i prodotti dove la data (DateSF) ricade nell'ultimo mese ?

  2. #2
    Utente di HTML.it L'avatar di ilgiovo
    Registrato dal
    Aug 2001
    Messaggi
    518
    qualcosa tipo


    strSQL="SELECT * FROM products where new='1' AND month(dateSF) = " & month(date()) & " ORDER BY tip_IT DESC"

    dovrebbe estrarti tutti i record del mese corrente
    Cacca!

  3. #3
    mi da errore

    Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
    /wireless/it/news.asp, line 158

    su questa riga : rs.Open strSQL, objConn, 3,3

    codice:
    <%
    'APERTURA CONNESSIONE CON IL DATABASE SENZA DSN 
    	Set objConn = Server.CreateObject("ADODB.Connection") 
    	objConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/fpdb/wire_products.mdb") 
    	strSQL="SELECT * FROM products where new='1' AND month(DateSF) = " & month(date()) & " ORDER BY tip_IT DESC"
    	set rs=server.CreateObject("ADODB.recordset")
    	rs.Open strSQL, objConn, 3,3
    %>

  4. #4
    Utente di HTML.it L'avatar di ilgiovo
    Registrato dal
    Aug 2001
    Messaggi
    518
    prova così

    strSQL="SELECT * FROM products where new='1' AND month(dateSF) = month(date()) ORDER BY tip_IT DESC"
    Cacca!

  5. #5
    e se volessi allargare a 2 mesi ?

  6. #6
    Utente di HTML.it L'avatar di ilgiovo
    Registrato dal
    Aug 2001
    Messaggi
    518
    Originariamente inviato da zeweb
    e se volessi allargare a 2 mesi ?
    e poi?? te lo faccio io il programma??? ti consiglio un corso di SQL!!!

    mese corrente + mese successivo

    strSQL="SELECT * FROM products where new='1' AND (month(dateSF) = month(date()) OR month(dateSF) = month(date()) + 1) ORDER BY tip_IT DESC"

    mese corrente + mese precedente

    strSQL="SELECT * FROM products where new='1' AND (month(dateSF) = month(date()) OR month(dateSF) = month(date()) - 1) ORDER BY tip_IT DESC"

    il concetto è semplice:
    premesso che la funzione month(campo_data) ti restituisce il valore del mese della data contenuta nel campo_data, gli stai dicendo che questo valore nel campo dateSF deve essere uguale al valore del mese corrente (la funzione date() ti ritorna la data di oggi) oppure del mese prossimo (month(date()) + 1)

    o precedente nell'altro esempio
    Cacca!

  7. #7
    Grazie, cmq !

  8. #8
    Grazie per l'aiuto ma non funziona perchè i prodotti che hanno nel campo DataSF una data di Dicembre 2004 (22-dic-2004) non li vede !


  9. #9
    Utente di HTML.it L'avatar di ilgiovo
    Registrato dal
    Aug 2001
    Messaggi
    518
    Originariamente inviato da zeweb
    Grazie per l'aiuto ma non funziona perchè i prodotti che hanno nel campo DataSF una data di Dicembre 2004 (22-dic-2004) non li vede !

    giusto! non ci avevo pensato

    allora dovresti prendere

    mese corrente + mese successivo

    strSQL="SELECT * FROM products where new='1' AND (month(dateSF) = month(date()) OR month(dateSF) = month(date() + 31)) ORDER BY tip_IT DESC"

    mese corrente + mese precedente

    strSQL="SELECT * FROM products where new='1' AND (month(dateSF) = month(date()) OR month(dateSF) = month(date() - 31)) ORDER BY tip_IT DESC"

    che dovrebbe prendere il mese della data di oggi - (o +) 31 giorni; in questo modo si calcola lui a che mese arrivi e fa automaticamente anche il passaggio dell'anno
    Cacca!

  10. #10

    Osservazioni...

    Salve a tutti,
    dando un'occhiata al codice mi sono chiesto... ma cosa succederà con questo codice il giorno 31 Gennaio? Visto che il mese di Febbraio ha 28 o 29 gg, aggiungendovi 31 giorni non scatterà direttamente al mese di Marzo? Anche al 31 marzo visto che aprile ha 30 gg, aggiungendo 31 gg.. scatterà direttamente il mese di maggio... giusto?
    Non conosco ancora bene la sintassi sql, ma nn sarebbe meglio utilizzare l'operatore modulo sul mese, in pratica mi spiego meglio, aggiungiamo il valore 1 al mese corrente ed applichiamo sul risultato il modulo di 12, esempio: (questo si puo' fare se sql utilizza il conto dei mesi come in java che partono da zero, gennaio = mese 0 ecc..) siamo nel mese di dicembre, dicembre + 1= 12 modulo 12 = 0 (zero cioè il mese di gennaio), invece ad esempio in giugno: month(date() + 1) % 12 = 6 (il sei equivarrebbe al mese di luglio..)
    Spero di aver almeno reso l'idea.. oppure ho sbagliato tutto??

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.