Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. Visual Studio 6.0
Memorizzazione di orari in SQL Server 7.0.0
giovedì 26 aprile 2007 - 14.16
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Paolo1972
Profilo
| Newbie
9
messaggi | Data Invio:
gio 26 apr 2007 - 14:16
Salve a tutti,
sto realizzando un programma in VB 6 che utilizza come base dati SQL Sever 7.0.0. Questo programma prevede la memorizzazione di date e di orari. Fin quando si tratta di memorizzare le date utilizzo la seguente istruzione in SQL:
INSERT INTO MiaTabella (COGNOME, NOME, DATADINASCITA) VALUES _
&"("& "'" & sCognome & "'" & "," & "'" & sNome & "'" & "." & "'" & sDataDiNascita & "'" & ")"
dove sCognome e sNome sono varibili di tipo stringa e sDataDiNascita è una variabile di tipo stringa contenente la data nel formato yyyy-mm-dd (ad es. 2007-01-01). Ovviamente il campo DATADINASCITA è di tipi datetime. Inoltre nel campo DATADINASCITA olte alla data trovo anche l'orario.
Quando poi devo visualizzare le informazioni memorizzate in una MSHFlexGrid utilizzo la seguente istruzione in SQL:
SELECT MiaTabella.COGNOME, MiaTabella.NOME, CONVERT (VARCHAR(10), MiaTabella.DATADINASCITA, 103) AS SoloData FROM MiaTabella.
Fin qui tutto ok...entrambi le istruzioni funzionano. Ora il problema nasce quando devo visualizzzare gli orari.
Per memorizzare un orario posso utilizzare la seguente istruzione in SQL:
INSERT INTO MiaTabella (COGNOME, NOME, ORAENTRATA) VALUES _
&"("& "'" & sCognome & "'" & "," & "'" & sNome & "'" & "." & "'" & sOraEntrata & "'" & ")"
dove sOraEntrata ha l'ora memorizzata nel formato hh:mm (ad es. 13:00). Anche in questo caso il campo ORAENTRATA è di tipo datetime.
Come faccio però a visualizzare solo la parte dell'ora visto che anche in questo caso nel campo ORAENTRATA mi compare prima la data e poi l'ora?
Ho sbagliato a scrivere la INSERT per l'orario?
Grazie a tutti per la rispsota.
Paolo
dedalo.nel.labirinto
Profilo
| Newbie
33
messaggi | Data Invio:
sab 5 mag 2007 - 20:28
SELECT MiaTabella.COGNOME, MiaTabella.NOME,
right('0' + cast(datepart(hour, MiaTabella.ORAENTRATA) as varchar(2)), 2) + ':'
+ right('0' + cast(datepart(minute, MiaTabella.ORAENTRATA) as varchar(2)), 2) AS Ora
FROM MiaTabella
oppure:
SELECT MiaTabella.COGNOME, MiaTabella.NOME, substring(convert(varchar(20), MiaTabella.ORAENTRATA, 20), 12, 5) AS Ora FROM MiaTabella
Paolo1972
Profilo
| Newbie
9
messaggi | Data Invio:
mar 8 mag 2007 - 08:49
Grazie per la risposta.
Nel frattempo che aspettavo la risposta ho fatto alcune modifiche alla mia SELECT iniziale ed ho trovato la seguente istruzione:
SELECT MiaTabella.Cognome, MiaTabella.Nome, CONVERT (VARCHAR(5), MiaTabella.DATADINASCITA, 108) AS SoloOra
quindi differisce dalla precendente istruzione ssql (SELECT MiaTabella.COGNOME, MiaTabella.NOME, CONVERT (VARCHAR(10), MiaTabella.DATADINASCITA, 103) AS SoloData FROM MiaTabella) solo dalla lunghezza della stringa (5 invece di 10) e dal numero (108 invece di 103). Ho fatto varie prove e tutte mi danno esito positivo.
Semplice curiosità: l'istruzione da me utilizzata ha qualche "effetto collaterale"
oppure è una valida alternativa?
Grazie per la risposta
Paolo
dedalo.nel.labirinto
Profilo
| Newbie
33
messaggi | Data Invio:
mar 8 mag 2007 - 21:04
si penso sia una valida alternativa, senza problemi.
i valori numerici passati al metodo convert() sono degli stili utilizzati per formattare in testo una datetime. se non ne viene specificato alcuno SQLServer utilizzerà i suoi settaggi, in base al linguaggio, alle sue impostazioni... ogni istanza ha dei settaggi propri.
utilizzando:
CONVERT (VARCHAR(5), MiaTabella.DATADINASCITA, 108)
stai specificando che il valore datetime deve essere nel formato hh:mm:ss e della stringa risultante vuoi solo i primi 5 caratteri.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !