Problemi con la data! datetime..

venerdì 23 ottobre 2009 - 12.43

marco8717 Profilo | Newbie

ciao, ho un piccolo problema nell'inserimento di una data all'interno di un database;
vi spiego meglio.. io sto usando aspnet 2.0 e c#,mentre come database uso sqlserver 2005.
in pratica non riesco a fare l'insert di una data all'interno del database;la data che mi recupero è di tipo datetime sia nel Db che nel programma,infatti per recuperare la data odierna uso la funzione DATETIME.NOW()!
vi prego aiutatemi..

luxsor Profilo | Guru

Ciao Marco,
posta il codice che utilizzi per effettuare la insert.



------------------------
Luxsor

marco8717 Profilo | Newbie

ok! la insert che faccio è questa,il problema è solo sulla data!

DateTime dataNow = DateTime.Now;
String sqlComm = "INSERT INTO ordini (codice,codice_cliente,data,stato) VALUES (' " valore " ',' " valore " ' ,' " + dataNow + " ', ' " valore " ')";
ecco qui;)

luxsor Profilo | Guru

Prova così:
>String sqlComm = "INSERT INTO ordini (codice,codice_cliente,data,stato)
>VALUES (' " valore " ',' " valore " ' ,'" & Now.Date & "', '
>" valore " ')";



------------------------
Luxsor

marco8717 Profilo | Newbie

grazie lo stesso ma ho risolto scrivendo cosi:
INSERT INTO ordini (codice,codice_cliente,data,stato) VALUES (' " + valore + " ',' "+ valore + " ',Getdate(), ' " + valore + " ');

Pinky Profilo | Junior Member

(Prima o poi avrai bisogno di dover inserire date diverse dalla corrente)
Quello che tu facevi era concatenare un oggetto DateTime ad una stringa, questo comporta la chiamata "intrinseca" al ToString() dell' oggetto (di qualunque tipo esso sia).
E quindi ottieni la formattazione in base alle cultura del thread corrente.
Invece i database SQL Server accettano le date "preferibilmente" in formato ISO standard (YYYY-DD-MM) e le seguenti sono tutte perfettamente valide (sulla terza non ci giurerei al 100%):

insert into Test Values (1, '2000-12-31', 'capodanno 2000'); -- ISO
insert into Test Values (2, '30001231', 'capodanno 3000'); -- ???
insert into Test Values (3, '12/31/4000', 'capodanno 4000'); -- US

La seconda è utile a chi gestisce le date come intero, o stringa equivalente, e fino a poco fa era quella che usavo, adesso uso la "versione" ISO perchè credo sia la più standard "in generale".

Naturalmente si rende utile una funzione per avere la data pronta per il db, ad esempio:
public static string FormatDBDate(DateTime date) { date.ToStrong("yyyy-MM-dd"); }

Ciao
Alessandro

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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5