I vilket sammanhang ? Nja, jag har startdatum och slutdatum. Om slutdatum är mindre än startdatum så vill jag ha in null i databasen. Tror lägsta möjliga värdet är 0001-01-01 00:00:00, eller Datetime.Minvalue Som du vill ha det går inte. 0000-00-00 är inte ett giltigt datum. Lägsta är som sagt 0001-01-01 00:00:00. Blir knas i sql-satsen. För att dDate skall kunna vara null måste den antingen vara en nullable type eller också en referens Det gick inte så bra. Nu har jag gjort som så att slutdatum får vara samma som startdatum om inte annat gives, och detSv: Problem med DateTime
Vill du stoppa in det i db ?
eller vill du att ett datetime objekt skall vara "noll"?Sv:Problem med DateTime
<code>
if (CalendarPopup2.SelectedDate > CalendarPopup1.SelectedDate)
dDate = CalendarPopup2.SelectedDate;
else
dDate =Convert.ToDateTime(null);
</code>
När jag skriver så här så får jag 2001-01-01 i databasen.Sv:Problem med DateTime
Sv: Problem med DateTime
Men du kan göra så här typ:
//Deklarera dDate som null
Nullable<DateTime> dDate = null;
//Jämför värdena och sätt in ett datum - om else så låter du dDate vara null.
if(jämför=true){
dDate= DateTime.Now; //Som exempel bara
}
//Kolla sen vid update satsen om dDate.HasValue och updatera med null
string sql = "";
if (!dDate.HasValue)
sql = "update tSpam SET createdDate=null where spamid=2";
else
sql = "update tSpam SET createdDate='" + dDate.Value + "' where spamid=2";
Eller om du vill koda snyggare så lägg in via parametrar istället.
MvhSv: Problem med DateTime
t.ex.
DateTime? dDate = null;
if (CalendarPopup2.SelectedDate > CalendarPopup1.SelectedDate)
dDate = CalendarPopup2.SelectedDate;
eller
object dDate = null;
if (CalendarPopup2.SelectedDate > CalendarPopup1.SelectedDate)
dDate = CalendarPopup2.SelectedDate; // boxing
När du sen stoppar in värdet i databasen med t.ex. ett dataset gör du
row["datum"] = dDate ?? SqlDateTime.Null;
(Av någon konstig anledning så stöder inte dataset nullable types)
Edit: Oops, började skriva svaret i går kväll men blev avbruten. Nu såg jag att Anders sa samma sakSv:Problem med DateTime
<info>
Parametern ?_6 har inget standardvärde. vid System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,
Object& executeResult)
vid System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
vid System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
vid System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String
method)
vid System.Data.OleDb.OleDbCommand.ExecuteNonQuery()
vid Admin_Order_Order.saveData() i c:\Inetpub\wwwroot\Mkef\Admin\Order\Order.aspx.cs:rad 321
</info>
Och då gjorde jag
<code>
Nullable<DateTime> dDate = null;
if (CalendarPopup2.SelectedDate > CalendarPopup1.SelectedDate)
dDate = CalendarPopup2.SelectedDate;
</code>
..som läggs in i parametrar.... Sv: Problem med DateTime
fungerar bra.
Nu till ett annat problem, datapicker och timepicker har jag laddat ner ifrån http://www.eworldui.net/, och de verkar fungera bra.
I database så är fälten startDatum, slutDatum, startTid, slutTid och totalTid av datatypen DateTime.
För datumfälten så har jag en indatamask: 0000-00-00;0;_
För tidsfälten 00:00;0;_, det är alltså kort datumformat resp kort tidsformat, och tittar man i databasens
tabel så ser det bra ut, men när jag kör det via GridView1 och likadant via DetailsView1 så ser det för
dj-gt ut.
Startdatum: 2008-03-21 00:00:00
Starttid: 1899-12-30 00:00:00
Varför blir det så? Hur formaterar jag det?
[REDIGERAT]
Nu har jag löst det men inte på ett för mig tillfredställande sätt...
<code>
<%# System.Convert.ToDateTime(Eval("antalTimmar")).ToShortTimeString() %>
</code>
Försöker jag sedan att uppdatera du falera allting.