Newsgroup: it.comp.lang.visual-basic
Titolo: [espeti SQL = FIBIA ..e non solo] Campo Di tipo DateTime e SELECT???

Ho fatto una query ti questo tipo ad un DB:
lista.RecordSource = "SELECT * FROM GP_STPRESSA WHERE STPRESSA_DATEIN =
13/07/2001 12.56.26"
dove STPRESSA_DATEIN è di tipo datetime!Ma mi restituisce 'the conversion of
a char data type to a datetime data type resulted in out-of-range datatime
value'.  Mi sapete dire il prerche?
Ciao e Grazie a tutti Emas=Manu=flash!!!!


se non ricordo male
al posto di STPressa_DateIn metti :
"format(" &  STPressa_DateIn & ", 'mm/dd/yyyy hh:nn') = ...
facci sapere
saluti

NIENTE , mi dice che 'format' is not recognize function name..
puo diperndere dal tipo di database che uso (SQL Server 7.0) ?
Grazie lo stesso!

 puo diperndere dal tipo di database che uso (SQL Server 7.0) ?
Devi aggiungere gli apici:
lista.RecordSource = "SELECT * FROM GP_STPRESSA WHERE STPRESSA_DATEIN
='13/07/200 1 2.56.26' "
Ciao
Alfonso

 puo diperndere dal tipo di database che uso (SQL Server 7.0) ?
Il problema che ti cruccia non č la format, sono gli apici.
Dopodiché come scrivi la data e l'ora dentro gli apici sono
affari tuoi... BTW ti conviene usare dei campi double, in
modo che non dipenda dal "language locale" (US, IT, ...).
Ciao.
Mauro

Il problema è che il database non lo greo io ma mi viene creato da un
sistema che probabilmente non usa la mia stessa "language locale".... E'
possibile che quando VISUALIZZO il campo sul mio Pc  mi datatime ce l'ho
nella forma dd/mm/yyy hh.mm.ss mentre nel caso in cui faccio la SELECT mi
genera un errore di out-of.range .. dovuto probabilmete ad un diverso
"languge locale"(insomma a diverse impostazioni internazionali)????
Grazie per l' attenzione.

Manu ha scritto:

Provo a suggerire un paio di strade:
1.
Formatti la data secondo lo standard ODBC, che e'
YYYY-MM-DD HH:NN:SS  compreso fra apici singoli;
2.
(Se usi ADO) Trasmetti l' istruzione sql tramite un Command;
a tale Command accodi un Parameter di tipo DBDate con
la proprieta' Value assegnata con una variabile di tipo Date;
ci pensera' ADO a formattarsi internamente la stringa nel modo corretto;
hth, hal

 puo diperndere dal tipo di database che uso (SQL Server 7.0) ?
giustamente ..
ecco come faccio io in SQLS7
WHERE <Nomecampo> = Convert(DateTime,'" & <Valore in formato testo> &
"',105)",
guarda su MSDN e cerca la funzione Convert, dovrebbe esserci anche il
formato giorno+ore ...
per la gioia di Moreno :) ... quando mi sono posto lo stesso dubbio di Manu,
ho cercato su google ed ho trovato tutto.
Saluti

Fox ho fatto anchio cosi.. di solito prima di postare seguo tutte le strade
possibili.. ma sta volta non sono riuscito a risolvere da me ...e questo mi
fa enormemente inkazzare!!! :))) Grazie per l'aiuto provero a seguire i
vostri consigli!
Grazie ancora!!!


Era solo una frecciatina .. nulla di polemico ...
proprio ora sto utilizzando la sintassi usando la funzione CONVERT .. sembra
funzionare a meraviglia
fammi sapere
saluti

 ha scritto nel messaggio
news:9n4v8t$kr2$1...@fe2.cs.interbusiness.it...

Azz... anche a me da strani errori di out of range ...
il problema sorge quando si tenta di accodare un orario (ex 15:30) ad una
data (ex 01-08-2001)
la funzione TSQL Convert(DateTime, '01-08-2001 15:30', 105) sembra non
essere in grado di convertire anche l'orario, o meglio, bisogna cercare la
sintassi corretta per poter specificare sia data che ora nel secondo
parametro della funzione.
Ho provato tutte le sintassi possibili, ho sostituito i trattini con gli
slash, i due punti col punto, ho cambiato il formato della data nei più
disparati formati ecc...
Togliendo l'ora (cioè 15:30) la conversione funziona ma prende come
riferimento l'ora 0.00
Dopo aver perso quasi una mezza giornata cambiando i parametri della f.
CONVERT ho fatto questo :
- Prendo la data e la divido in 2 stringhe, una contenente il riferimento
del giorno "dd-mm-yyyy", l'altra con l'orario "hh.nn"
- trasformo la seconda in minuti con Minuti = nn + (hh*60)
- nello statement metto : WHERE CampoData = DATEADD(n, " & Minuti & ",
CONVERT(DateTime, '" & MiaData & "', 105))
se invece
il tutto fosse in una SP sarebbe più facile perchè il parametro (cioè la
data+ora) viene 'assunto' come DateTime type (da VB gli si passa
direttamente una var As Date).
Se qualcuno ha idee migliori ... impossibile :)
Saluti

 il tutto fosse in una SP sarebbe piů facile perchč il parametro (cioč la


 
http://www.sqlmag.com/
ho letto qualcosa ma pare non ci sia nulla che faccia riferimento alla
conversione data+ora.
ho provato ad utilizzare DATEDIFF, ma il problema rimane .. non c'è modo di
fargli accettare una data nel formato Data+Ora.
Saluti

 c'è modo di fargli accettare una data nel formato Data+Ora.
Ciao,
scusa se mi ripeto ma avevo accennato alla cosa anziché spiegarla
per esteso e magari non si era capita.
Io ho avuto lo stesso problema di Manu e l'ho risolto usando un
campo Double (Numerico/DoppiaPrecisione) anziché Date/Time. Il
contenuto (in memoria) di un Double e di un Date/Time sono uguali,
con il vantaggio che mettere un valore numerico in una query è
una banalità (Str$). Il cliente non se ne accorge neanche, se
il formato di default del campo è un formato di data/ora.
Questo non risolve, temo, il problema di Manu, che (se ho capito
bene) non può intervenire sul database, ma il problema lo si può
risolvere al contario, ovvero convertendolo a double nella query:
dblData# = DateSerial (2001,09,06) + TimeSerial (23,24)
Sql$ = "Select * from MYTAB where cdbl(myDate) > " & str$(dblData#)
Ciao.
Mauro

Fox... il grande di XFiles... io ho smanetatto un po con le impostazioni
internazionali del Pannello di controllo ... infatti dipende tutto da quali
ha il Server in cui è agganciato il DB SQL  da dove il programma VB (che sta
un altro PC) deve prelevare i dati. Cosi almeno mi sembra!
Grazie per l'aiuto!!!!

 Sql$ = "Select * from MYTAB where cdbl(myDate) > " & str$(dblData#)
Se ho ben capito :
nel db registri la data seriale (cioè quella espressa con un unico numero
double), quindi i vari confronti li fai con valori numerici.
Davvero notevole l'ingegno.
Ora provo
Saluti

ops.. l'ho letto solo oggi
come ci son finisco sul subject?
#^__^;#
--
Fibia "wonders who is?" FBI

> come ci son finisco sul subject?
                       ^^^^^
arghh.. la grammatica di base.. almeno quella :P
--
Fibia "auto-responder" FBI

 quindi i vari confronti li fai con valori numerici.
Certo, č proprio cosě.
Mi ero picchiato con il problema dovendo cancellare tutti
i record di un db registrati "piů di un'ora fa".
Una volta che ho visto che il trucco funzionava ho
eliminato "per sempre" i campi date/time dai miei database
(li mantengo solo se non debbo farci alcuna operazione).
Ciao.
Mauro