Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Discussione: mktime in mysql query

  1. #1

    mktime in mysql query

    SELECT * FROM disponibilita WHERE data = '2013-05-01' and ente = '1' and da >= '06:00:00' and a <= '16:00:00' GROUP BY volontario

    Avendo la suddetta query, che mi funziona solo se i valori sono uguali, quindi ignorando < e >, è possibile fare un mktime direttamente nella query, tenendo presente che i campi sono TIME?
    Grazie

  2. #2

    Re: mktime in mysql query

    Originariamente inviato da poeta1978
    SELECT * FROM disponibilita WHERE data = '2013-05-01' and ente = '1' and da >= '06:00:00' and a <= '16:00:00' GROUP BY volontario

    Avendo la suddetta query, che mi funziona solo se i valori sono uguali, quindi ignorando < e >, è possibile fare un mktime direttamente nella query, tenendo presente che i campi sono TIME?
    Grazie
    Come già affermato in QUESTA discussione, se il campo è di tipo TIME puoi fare il confronto molto semplicemente utilizzando gli appositi operatori tra i quali il < ed il >.
    Quello che affermi,

    ..."mi funziona solo se i valori sono uguali, quindi ignorando < e >"...

    non ha senso! E' un problema dei dati che hai nel DB e quelli con i quali esegui la query!

    Prova a postare il contenuto di alcuni record del DB e la query che esegui.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    la query eseguita è quella riportata e con echo $row["da"].$row["a"] i dati ci sono

  4. #4
    Prova a postare un dump della tabella, magari anche solo per la data in questione se puoi perchè il confronto deve funzionare così com'è. Il problema è nei dati.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Struttura della tabella `disponibilita`
    --

    CREATE TABLE IF NOT EXISTS `disponibilita` (
    `id` int(255) unsigned NOT NULL AUTO_INCREMENT,
    `ente` int(255) NOT NULL,
    `volontario` int(255) NOT NULL,
    `data` date NOT NULL,
    `da` time NOT NULL,
    `a` time NOT NULL,
    `id_inserito` int(255) NOT NULL,
    `inserito` datetime NOT NULL,
    `id_modifica` int(255) NOT NULL,
    `modifica` datetime NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=35 ;

    --
    -- Dump dei dati per la tabella `disponibilita`
    --

    INSERT INTO `disponibilita` (`id`, `ente`, `volontario`, `data`, `da`, `a`, `id_inserito`, `inserito`, `id_modifica`, `modifica`) VALUES
    (32, 1, 8, '2013-05-01', '06:00:00', '16:00:00');

  6. #6
    Si ma per capire del perchè la query non tira sù i dati che ti aspetti sarebbe necessario dare un'occhiata al contenuto della tabella in questione e non alla sua struttura.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    CREATE TABLE IF NOT EXISTS `disponibilita` (
    `id` int(255) unsigned NOT NULL AUTO_INCREMENT,
    `ente` int(255) NOT NULL,
    `volontario` int(255) NOT NULL,
    `data` date NOT NULL,
    `da` time NOT NULL,
    `a` time NOT NULL,
    `id_inserito` int(255) NOT NULL,
    `inserito` datetime NOT NULL,
    `id_modifica` int(255) NOT NULL,
    `modifica` datetime NOT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=35 ;

    --
    -- Dump dei dati per la tabella `disponibilita`
    --

    INSERT INTO `disponibilita` (`id`, `ente`, `volontario`, `data`, `da`, `a`, `id_inserito`, `inserito`, `id_modifica`, `modifica`) VALUES
    (1, 1, 8, '2013-02-05', '10:00:00', '15:30:00', 1, '2013-02-02 17:25:32', 0, '0000-00-00 00:00:00'),
    (2, 1, 8, '2013-03-01', '15:05:00', '19:15:00', 1, '2013-02-03 10:16:59', 1, '2013-02-03 16:58:01'),
    (4, 1, 9, '2013-02-05', '08:00:00', '15:00:00', 1, '2013-02-03 18:12:10', 0, '0000-00-00 00:00:00'),
    (5, 1, 10, '2013-02-05', '08:00:00', '13:00:00', 1, '2013-02-04 10:45:23', 0, '0000-00-00 00:00:00'),
    (6, 1, 9, '2013-02-05', '20:00:00', '21:00:00', 1, '2013-02-04 10:46:35', 0, '0000-00-00 00:00:00'),
    (8, 1, 8, '2013-02-28', '14:00:00', '18:00:00', 1, '2013-02-05 11:16:17', 0, '0000-00-00 00:00:00'),
    (9, 1, 8, '2013-02-22', '10:00:00', '13:00:00', 1, '2013-02-07 16:43:54', 0, '0000-00-00 00:00:00'),
    (10, 1, 8, '2013-03-02', '01:00:00', '02:00:00', 1, '2013-02-12 20:08:09', 0, '0000-00-00 00:00:00'),
    (11, 1, 8, '2013-03-03', '00:00:00', '00:00:00', 1, '2013-02-12 20:08:43', 0, '0000-00-00 00:00:00'),
    (12, 1, 8, '2013-03-04', '00:00:00', '00:00:00', 1, '2013-02-12 20:08:56', 0, '0000-00-00 00:00:00'),
    (13, 13, 14, '2013-02-01', '08:00:00', '15:00:00', 13, '2013-02-17 16:24:33', 0, '0000-00-00 00:00:00'),
    (14, 1, 9, '2013-01-03', '03:00:00', '03:00:00', 1, '2013-03-05 17:07:47', 0, '0000-00-00 00:00:00'),
    (15, 1, 16, '2013-03-06', '01:00:00', '02:00:00', 1, '2013-03-05 20:40:15', 1, '2013-03-06 15:38:34'),
    (16, 1, 16, '2013-03-06', '01:00:00', '21:00:00', 1, '2013-03-05 21:03:05', 1, '2013-03-05 21:09:46'),
    (17, 1, 16, '2013-03-07', '08:00:00', '11:00:00', 1, '2013-03-05 21:12:26', 0, '0000-00-00 00:00:00'),
    (18, 1, 10, '2013-02-06', '00:00:00', '00:00:00', 1, '2013-03-06 12:12:03', 0, '0000-00-00 00:00:00'),
    (19, 1, 18, '2012-05-06', '07:00:00', '20:00:00', 1, '2013-03-20 11:38:45', 0, '0000-00-00 00:00:00'),
    (20, 1, 18, '2013-03-19', '07:00:00', '00:00:00', 1, '2013-03-20 11:40:02', 0, '0000-00-00 00:00:00'),
    (21, 1, 18, '2013-04-05', '02:00:00', '00:00:00', 1, '2013-03-20 12:40:01', 0, '0000-00-00 00:00:00'),
    (22, 1, 16, '2013-03-22', '07:30:00', '12:30:00', 1, '2013-03-21 09:29:34', 0, '0000-00-00 00:00:00'),
    (23, 1, 16, '2013-03-22', '17:00:00', '20:00:00', 1, '2013-03-21 09:30:34', 0, '0000-00-00 00:00:00'),
    (24, 1, 16, '2013-01-01', '00:00:00', '00:00:00', 1, '2013-03-21 14:25:07', 0, '0000-00-00 00:00:00'),
    (31, 1, 9, '2013-04-01', '09:01:00', '12:00:00', 1, '2013-04-12 17:33:59', 0, '0000-00-00 00:00:00'),
    (26, 1, 9, '2013-04-04', '09:01:00', '12:00:00', 1, '2013-03-30 11:24:10', 0, '0000-00-00 00:00:00'),
    (27, 1, 9, '2013-04-07', '09:01:00', '12:00:00', 1, '2013-03-30 11:24:10', 0, '0000-00-00 00:00:00'),
    (28, 1, 9, '2013-04-26', '09:01:00', '12:00:00', 1, '2013-03-30 11:24:38', 0, '0000-00-00 00:00:00'),
    (29, 1, 9, '2013-04-29', '09:01:00', '12:00:00', 1, '2013-03-30 11:24:38', 0, '0000-00-00 00:00:00'),
    (32, 1, 8, '2013-05-01', '06:00:00', '16:00:00', 1, '2013-04-26 10:00:54', 0, '0000-00-00 00:00:00'),
    (33, 1, 8, '2013-05-07', '06:00:00', '16:00:00', 1, '2013-04-26 10:00:54', 0, '0000-00-00 00:00:00'),
    (34, 1, 8, '2013-05-13', '06:00:00', '16:00:00', 1, '2013-04-26 10:00:54', 0, '0000-00-00 00:00:00');

  8. #8
    Dai dati del dump vedo che il motivo per cui la query ti restituisce un solo record non è imputabile al mancato funzionamento dei < e > ma dal semplice fatto che vi è un solo record che soddisfa tutte le condizioni (essendo queste tutte in AND affinchè un record venga selezionato è necessario che TUTTE le condizioni siano soddisfatte contemporaneamente) (tra l'altro vi è un unico record con valore data = '2013-05-01').
    Se la tua intenzione era ottenere dei differenti risultati dovresti rivedere la query, verosimilmente alcuni AND dovrebbero essere sostituiti da OR oppure racchiudere le condizioni in parentesi in modo da modificarne la priorità di valutazione.

    Se provi a descrivere a parole ciò che vorresti ottenere si può provare a rivedere la query.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    in pratica devo estrarre i record di quella data e nella fascia oraria indicata, es. 1 maggio 2013, tra le 10,00 e le 12,00

  10. #10
    Originariamente inviato da poeta1978
    in pratica devo estrarre i record di quella data e nella fascia oraria indicata, es. 1 maggio 2013, tra le 10,00 e le 12,00
    Quindi la query funziona a dovere in quanto vi è un solo record con quelle caratteristiche.
    Se, ad esempio, con i dati che hi postato effettui la seguente query:

    codice:
    SELECT * FROM disponibilita WHERE data = '2013-02-05' AND ente = '1' AND 
    da >= '08:00:00' AND a <= '15:00:00' GROUP BY volontario
    ti verranno restituiti 2 record.

    Non capisco i tuoi dubbi iniziali sul mancato funzionamento del < e > ?!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.