PDA

View Full Version : [T-SQL]Datetime


vicus
23-05-2006, 16:16
Uso MsSQL 8 ed ho un campo in una tabella il cui formato è datetime, devo fare qua query in cui devono ritornarmi solo le tuple di un determinato giorno ma con qualsiasi ora:
SELECT * FROM ordini WHERE Data LIKE '200060619%'
non funziona. So che sono problemi di dateformat però non so come impostarlo ne verificare che impostazioni ci sono. Chi mi da una mano a capire? Anche perchè è talmente incasinata la gestione delle date...

Duncan
23-05-2006, 16:43
puoi provare con un convert() credo


SELECT * FROM ordini WHERE Data = CONVERT(datetime, '19/06/2006', 105)

vicus
23-05-2006, 16:55
Così funziona ma il recordset è vuoto perchè l'ora è diversa da 00:00:00.000 infatti i problemi li ho avuti quando ho inserito l'ora.

Duncan
23-05-2006, 17:23
ollora taglia la testa al toro e predi tutti i recor maggiori di ieri e minori di domani

vicus
23-05-2006, 18:49
ollora taglia la testa al toro e predi tutti i recor maggiori di ieri e minori di domani

Infatti ho sisolto così anche se no se so mare bona come diciamo dalle mie parti.

Grazie

Duncan
23-05-2006, 22:59
domani vedo se ti trovo una soluzione più cool ;)

Duncan
24-05-2006, 09:47
La query come l'avevi scritta tu non ti funzionava, probabilmente, perchè provavi a confrontare una Data con una striga

leggendo un po' di documentazione su CONVERT() forse ho trovato una soluzione che potrebbe piacerti


SELECT * FROM ordini WHERE convert(varchar(8), Data, 112) = '20060619'


Praticamente converti la data in un formato senza ora

vicus
24-05-2006, 13:20
Non funziona.
Che documantazioni usi?

Duncan
24-05-2006, 13:28
Non funziona.
Che documantazioni usi?

quella di MSSQL server

Che errore ti da?

convert(varchar(8), Data, 112)

dovrebbe formattare la data nel formato yyyymmdd

Per capire meglio che problema hai potresti postarmi l'output di questa query? (mi mastano 2 3 righe)


SELECT convert(varchar(8), Data, 112), Data FROM ordini

vicus
24-05-2006, 15:55
Non mi da nessun errore solo non ritorna nulla.

Duncan
24-05-2006, 16:16
HAi guardato che output ti da la query che ti ho scritto prima?

vicus
24-05-2006, 16:45
L'output è vuoto.

Funziona con ...data>'20060619' and data<'20060620'

il problema ora è come dirgli maggiore del giorno dopo passandogli un solo parametro.

PS:la guida sul mssql è un libro? Dove posso trovare le info su internet?

Duncan
24-05-2006, 16:53
L'output è vuoto.

Funziona con ...data>'20060619' and data<'20060620'

il problema ora è come dirgli maggiore del giorno dopo passandogli un solo parametro.

PS:la guida sul mssql è un libro? Dove posso trovare le info su internet?


Intendevo questa query


SELECT convert(varchar(8), Data, 112), Data FROM ordini

Ho l'help in linea, non ho libri

vicus
24-05-2006, 18:13
Risultato della query :

SELECT convert(varchar(8), Data, 112), Data FROM ordini


Resultset 1
Data
------------------ ------------------------------------------------------

20060301 2006-03-01 00:00:00.000
20060902 2006-09-02 00:00:00.000
20060616 2006-06-16 11:00:00.000



Come faccio a convertire un int in stringa mantenendo la formattazione a 2 cifre? Cioè il numero 1 convertirlo in stringa "01"?

Duncan
24-05-2006, 19:46
Stano che non ti funzioni la query che ti ho scritto, perchè il la conversione viene fatta correttamente...


Per convertire un intero instringa via SQL formattandolo devi lavorare con CAST e poi ci aggiungi gli zeri che mancano, ma sei sicuro che lo devi fare con SQL?

vicus
24-05-2006, 19:51
In realtà uso ADO in vb6 ma non mi va di scrivere del codice per calcolare il giorno suvccessivo, pensavo esistesse una funzione che mi permetta di dirgli il giorno dopo di una tal data.
Uso anche il Dba Manager 2K per provare le query e intervenire sul db.

vicus
24-05-2006, 20:16
:muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro:
Come si fa a sbagliare na cosa così stupida!! Sbagliavo a passare un parametro così che il confronto non ritornava nulla perchè non cera nulla inquella data.

Grazie Duncan anche perchè ho capito un po' meglio come gestire le date.

Duncan
24-05-2006, 20:39
:muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro: :muro:
Come si fa a sbagliare na cosa così stupida!! Sbagliavo a passare un parametro così che il confronto non ritornava nulla perchè non cera nulla inquella data.

Grazie Duncan anche perchè ho capito un po' meglio come gestire le date.


Figurati, comunque quando ti dicevo se eri sicuro di usare SQL era riferito a formattare le gli interi nella forma 01 ;)