Hi ihr lieben,
hab mal wieder ein Frägelchen ^^
Und zwar baue ich ja grade zur Übung an einem Forum und möchte daher die Daten aus meinem WBB Forum übernehmen. Soweit kein Problem, alles mehr oder weniger sauber gelöst 😉
Aber eins gibt mir zu beißen, und zwar speichert das WBB Zeit+Datum als BigInt in der Datenbank, aber ich möchte diese Werte gerne als DateTime in der MS SQL Datenban speichern.
Nun habe ich diese SQL Funktion ergoogelt (mehr war leider nicht zu finden 🙁
Wie müsste die denn in C# aussehen? verzweifelt in die Runde schau
CREATE FUNCTION dbo.udfTicksToDateTime
(
@Ticks BIGINT
)
RETURNS DATETIME
AS
BEGIN
DECLARE @Days BIGINT
DECLARE @DaysBefore1753 BIGINT
DECLARE @TimeTicks BIGINT
DECLARE @Seconds BIGINT
SET @Days = @Ticks / CONVERT(BIGINT,864000000000)
SET @DaysBefore1753 = CONVERT(BIGINT,639905)
SET @TimeTicks = @Ticks % CONVERT(BIGINT,864000000000)
SET @Seconds = @TimeTicks / CONVERT(BIGINT,10000000)
RETURN DATEADD(s,@Seconds,DATEADD(d,@Days - @DaysBefore1753,CONVERT(DATETIME,'1/1/1753')))
END
Ich glaube ich habe sie soweit richtig übersetzt (?) aber die letzte codeline kann ich leider nicht umsetzen?
public static DateTime ConvertBigInt2DateTime(Int32 ticks)
{
Int32 days;
Int32 daysBefore1753;
Int32 timeTicks;
Int32 seconds;
days = ticks / Convert.ToInt32(864000000000);
daysBefore1753 = Convert.ToInt32(639905);
timeTicks = ticks % Convert.ToInt32(864000000000);
seconds = timeTicks / Convert.ToInt32(10000000);
Hat jemand ne Idee wie ich es es einfacher lösen kann oder den Codeschnippsel nach C# umschreiben kann?
Vielen viele Dank im voraus.
Euer Azzy
Tipp zu später Stunde :
... .AddDays(...
... .AddSeconds(...
... DateTime.Parse("01.01.1753")... oder
... new DateTime(1753,1,1,0,0,0)...
Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
Danke für die schnelle antwort, aber ich bekomms irgendwie nich hin 🙁
Zum testen hab übergeb ich die Zahl: 1099853804
(deswegen musst ich auch Int64 nehmen, weil sonst die Wertebereiche zu klein waren. Komischerweiße wird dann days 0.
und ich bin mir gar nicht so sicher, dass das was ich mache richtig is 🙁
*hilfe*
public static DateTime ConvertBigInt2DateTime(Int64 ticks)
{
Int64 days;
Int64 daysBefore1753;
Int64 timeTicks;
Int64 seconds;
days = ticks / System.Convert.ToInt64(864000000000);
daysBefore1753 = System.Convert.ToInt64(639905);
timeTicks = ticks % System.Convert.ToInt64(864000000000);
seconds = timeTicks / System.Convert.ToInt64(10000000);
DateTime date = new DateTime();
return date.AddSeconds(seconds).AddDays(days - daysBefore1753).Add(DateTime.Parse("1/1/1753"));
}
Keiner ne Idee warum das nicht funktioniert? 🙁
Ich verzweifel noch an den paar zeilen heul
hab nun nen umweg gemacht und das ganze in php geschrieben...
dort werden die daten rausselektiert, mit date(bla*bla) in einen datumswert gepresst und dann als nen insert string ausgeben....
@BerndFfm danke für den tipp auch wenn ich leider ausser stande war ihn korrekt zu benutzen, sry 😉