Newsgroup: it.comp.www.asp
Titolo: Data che mi fa impazzire!

Salve e grazie anticipatamente a tutto il ng.
Espongo il mio problema:
Scrivo in un db con l'SQL:
strSQL = "INSERT INTO tblReplys " & _
                "(IdReply, IdTopic, Messaggio, IdUtente, Data) " & _
                "VALUES (" & _
                CLng(IdReply) & ", " & _
                CLng(IdTopic) & ", " & _
                "'" & FixQuotes(Messaggio) & "', " & _
                CLng(IdUtente) & ", " & _
                "#" & FormatDateTime(Now(), 0) & "#)"
Considerando che oggi è il 6 novembre 2002, nel campo Data della tabella del
db viene stoccato:
11/06/02 18.48.56
quindi nel formato mm/dd/yy
Poi mi recupero la data e la metto a video con il response.write:
FormatDateTime(rsReply("Data"), 1)
Ma mi restituisce la data:
martedì 11 giugno 2002 al posto della tanto desiderara mercoledì 6 novembre
2002.
In + ho messo un global.asa con all'interno:
Sub Session_OnStart
    '
    '-- Setta nella sessione aperta, impostazioni internazionali IT
    '-- anche se da pannello server sono settate impostazioni USA
    LCID = 1040
    session.LCID = LCID
    '
End Sub
Ma niente da fare!!!
Mi inverte sempre i giorni con i mesi.
DOMANDA: COME RISOLVO IL PROBLEMA?
Grazie 1000.

 tabella del db viene stoccato:
Io da tempo ho rinunciato a pasticciare con LCID e FormatDateTime, le
conversioni me le faccio tutte io, almeno ho il controllo completo delle
conversioni...;-)
Per la query di inserimento ad esempio scrivi cosi':
  strSQL = "INSERT INTO tblReplys " & _
                "(IdReply, IdTopic, Messaggio, IdUtente, Data) " & _
                "VALUES (" & _
                CLng(IdReply) & ", " & _
                CLng(IdTopic) & ", " & _
                "'" & FixQuotes(Messaggio) & "', " & _
                CLng(IdUtente) & ", now)"
ossia usa il "now" dell'SQL invece di incasinarti con i FormatDateTime e
roba simile.
Poi per recuperare la data per metterla a video fai:
   Response.Write Date2StringDMY(rsReply("Data"))
La funzione "Date2StringDMY()" la inserisci, insieme ad altre, in un
file da includere (es. "utils.inc"), il codice lo trovi in calce al
messaggio.
Se invece hai una stringa in formato GG/MM/AAAA (ad es. proveniente da
un campo di una form) e devi usarla in una query la converti in
MM/GG/AAAA con:
sSQL = "select * from clienti where data>=" &
CampoData(Request.Form("data1"))
Oppure se la devi convertire in data (ad esempio per farci dei calcoli
via ASP):
DataInizio = StringDMY2Date(Request.Form("data1"))
Spero che sia abbastanza chiaro e semplice (e tra l'altro questi metodi
prescindono totalmente dalla "lingua" ed impostazione del server!).
Ecco il contenuto del "utils.inc":
<%
' --------------------------------------
Function StringDMY2Date(Stringa)
 If DateOK(DateDMSwap(Stringa)) Then
  StringDMY2Date = ConvDate(DateDMSwap(Stringa))
 Else
  StringDMY2Date = ""
 End If
End Function
' --------------------------------------
Function StringMDY2Date(Stringa)
 If DateOK(Stringa) Then
  StringDMY2Date = ConvDate(Stringa)
 Else
  StringDMY2Date = ""
 End If
End Function
' --------------------------------------
Function Date2StringDMY(Data)
 On Error Resume Next
 If CInt("0" & Day(Data))=0 Then
  Date2StringDMY = ""
 Else
  Date2StringDMY = Right("0" & Day(Data),2) & "/" & Right("0" &
Month(Data),2) & "/" & Year(Data)
 End If
End Function
' --------------------------------------
Function Date2StringMDY(Data)
 On Error Resume Next
 If CInt("0" & Day(Data))=0 Then
  Date2StringMDY = ""
 Else
  Date2StringMDY = Right("0" & Month(Data),2) & "/" & Right("0" &
Day(Data),2) & "/" & Year(Data)
 End If
End Function
' --------------------------------------
Function ConvDate(Stringa)
 ' Converte una stringa MM/DD/YYYY in data
 If DateOk(Stringa) Then
  ConvDate = DateSerial(CInt(Mid(Stringa,7)), CInt(Left(Stringa,2)),
CInt(Mid(Stringa,4,2)))
 Else
  ConvDate = ""
 End If
End Function
' --------------------------------------
Function CampoData(DataDMY)
 If DataDMY <> "" Then
  CampoData = "#" & DateDMSwap(DataDMY) & "#"
 Else
  CampoData = "null"
 End If
End Function
%>
Ciao!
--
   Alex Palmese
---
Sei anche tu stanco dei messaggi spam? Usa Terminator, il programma
anti-spam italiano FREEWARE! 
http://www.sertel.net/terminator/

Per inserire la data nel DB inseriscila sempre così: "aaaammgg hh:mm:ss".
Questo dovrebbe bastare se intendi visualizzarla sempre in formato italiano.
Altrimenti devi scriverti qualche funzione che ti permetta di gestire lo
scambio di date tra gli utenti (magari ognuno libero di scegliersi il
formato che vuole, esteso, breve, arabo o italiano) e il DB (sempre in
formato ANSI SQL aaaammgg... almeno non ti sbagli)
Ciao
--
:: Fate i bravi e non clonate le pecore!
:: Distractly yours... 
man...@ufologia.net

 roba simile.
[CUT]

 ha scritto:
} Salve e grazie anticipatamente a tutto il ng.
} Espongo il mio problema:
} Scrivo in un db con l'SQL:
} 
} strSQL = "INSERT INTO tblReplys " & _
}                 "(IdReply, IdTopic, Messaggio, IdUtente, Data) " & _
}                 "VALUES (" & _
}                 CLng(IdReply) & ", " & _
}                 CLng(IdTopic) & ", " & _
}                 "'" & FixQuotes(Messaggio) & "', " & _
}                 CLng(IdUtente) & ", " & _
}                 "#" & FormatDateTime(Now(), 0) & "#)"
strSQL = "INSERT INTO tblReplys " & _
                "(IdReply, IdTopic, Messaggio, IdUtente, Data) " & _
                "VALUES (" & _
                CLng(IdReply) & ", " & _
                CLng(IdTopic) & ", " & _
                "'" & FixQuotes(Messaggio) & "', " & _
                CLng(IdUtente) & ", " & _
                "Now())"
Saluti. Carlo.
--
Per rispondere via e-mail
togliere TOGLIMI dall'indirizzo.
E-mail: 
TOGLIMIc...@tiscalinet.it
Foglio Excel sulle tariffe telefoniche
Web I : 
http://web.tiscalinet.it/carlonike
    II: 
http://dadacasa.supereva.it/carlo_nike/
Scrivi il senso dei tuoi messaggi già nell'oggetto,
sarà più facile ottenere le risposte che cerchi.