Datoformat virker ikke
Hej,Nu VIL jeg altså have fat i det med datoer.
Mit problem: Jeg programmerer i asp.net (C#) - her sætter jeg en variabel til DateTime format, som jeg så kalder en Stored Procedure med, hvor jeg har lavet enparameter med SqlDbType.DateTime....
Jeg kan se, at den kommer ind som '01-01-1900 00:00:00' (som jeg også regner med)
I min storedprocedure spørger jeg så på datoen - hvis den er 01-01-1900 skal den sætte felt værdien til null i databasen.....
Det gør den bare ikke - den sætter den til datoen 01-01-1900 00:00:00
Min tabel er feltet sat som datetime :
editProductsCategoryEditedDate datetime Checked
Min stored procedure (som jeg laver i Visual Studio) ser ud som følgende:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void EditSetProductsMenuSpecific(int editProductsCategoryId, string editProductsCategoryName, string editProductsCategoryDescriptionContent,
string editProductsCategoryDescription, string editProductsCategoryKeywords, int editProductsCategoryOrder, bool editProductsCategoryRelease,
DateTime editProductsCategoryEditedDate, DateTime editProductsCategoryReleasedDate)
{
SqlConnection conn = new SqlConnection("Context Connection=true");
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.Parameters.Add(new SqlParameter("@editProductsCategoryId", editProductsCategoryId)); //Id
cmd.Parameters.Add(new SqlParameter("@editProductsCategoryName", editProductsCategoryName)); //Navn
cmd.Parameters.Add(new SqlParameter("@editProductsCategoryDescriptionContent", editProductsCategoryDescriptionContent)); //Indholds beskrivelse
cmd.Parameters.Add(new SqlParameter("@editProductsCategoryDescription", editProductsCategoryDescription)); //Beskrivelse søgeoptimering
cmd.Parameters.Add(new SqlParameter("@editProductsCategoryKeywords", editProductsCategoryKeywords)); //Keywords
cmd.Parameters.Add(new SqlParameter("@editProductsCategoryOrder", editProductsCategoryOrder)); //Rækkefølge
cmd.Parameters.Add(new SqlParameter("@editProductsCategoryRelease", editProductsCategoryRelease)); //Udgivet
cmd.Parameters.Add(new SqlParameter("@editProductsCategoryEditedDate", SqlDbType.DateTime)); //Ændret den
cmd.Parameters["@editProductsCategoryEditedDate"].Value = editProductsCategoryEditedDate;
cmd.Parameters.Add(new SqlParameter("@editProductsCategoryReleasedDate", SqlDbType.DateTime)); //Udgivet dato
cmd.Parameters["@editProductsCategoryReleasedDate"].Value = editProductsCategoryReleasedDate;
cmd.CommandText = @"
BEGIN TRANSACTION
BEGIN TRY
if @editProductsCategoryEditedDate = '01-01-1900 00:00:00'
BEGIN
set @editProductsCategoryEditedDate = null
END
if @editProductsCategoryEditedDate = '01-01-1900 00:00:00'
BEGIN
set @editProductsCategoryEditedDate = null
END
BEGIN
UPDATE EditProductsCategory
SET editProductsCategoryName = @editProductsCategoryName,
editProductsCategoryDescriptionContent = @editProductsCategoryDescriptionContent,
editProductsCategoryDescription = @editProductsCategoryDescription,
editProductsCategoryKeywords = @editProductsCategoryKeywords,
editProductsCategoryOrder = @editProductsCategoryOrder,
editProductsCategoryRelease = @editProductsCategoryRelease,
editProductsCategoryEditedDate = @editProductsCategoryEditedDate,
editProductsCategoryReleasedDate = @editProductsCategoryReleasedDate
WHERE editProductsCategoryId = @editProductsCategoryId
END
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
END CATCH";
conn.Open();
SqlDataReader rdr = cmd.ExecuteReader();
SqlContext.Pipe.Send(rdr);
rdr.Close();
conn.Close();
}
Det skal siges, hvis jeg forsøger at execute stored procedure fra MS SQL Manager med datoen 28-07-2009 får jeg følgende fejl:
Msg 8114, Level 16, State 1, Procedure EditSetProductsMenuSpecific, Line 0
Error converting data type varchar to datetime.
Hvis jeg derimod tager datoen 07-28-2009 så går den fint igennem i MS SQL Manageren.
Så jeg tror, det har noget at gøre med, at SQL serveren ikke opfatter det som en dansk dato men f.eks. engelsk indtil den lægger den ind - for den vises i tabellen som 28-07-2009...
Nogen der kan hjælpe mig med mit problem?
mvh
simsen :-)