String in bestimmtes DateTime Format konvertieren

Schormi

Mitglied
Hallo,

ich habe ein Problem, und zwar habe ich eine vorgegebene Datenbank in der ein feld typ Char drin ist, aber in diesem steht das Format yyMMddhhmmss.

nun muss ich daraus nach datum und zeit abfragen.
bsp.:
SELECT status FROM latra WHERE bearbeitung Between ? and ?;

Das klappt soweit, die Variablen kann ich befüllen, allerdings habe ich ein Problem wenn ich z.B. die zeit zwischen 23:00:00 uhr und 06:00:uhr fragen will kommt kein ergebnis da ja zwischen 120113230000 und 120113060000 logischerweise nichts ist.

Jetzt müsste ich irgendwie hinbekommen, dass das als Uhrzeit erkannt wird und nicht als String, habe jetzt versuche meinen suchstring in dateTime zu konvertieren mit Convert.ToDateTime(dat), aber er sagt es ist kein zulässiges datetime format.

bräuchte bischen hilfe, wie kriege ich meine Ergebniss zwischen 23 und 6 uhr?

P.S.: Nutze Windows Form, C#
 
Ich hab zwar nur die hälfte verstanden von dem was du vor hast.
Aber ich nehme mal an du suchst folgendes:
C#:
string totallyStupidFormatedDatetimeString = "120113230000";
DateTime date = DateTime.ParseExact(totallyStupidFormatedDatetimeString, "yyMMddHHmmss", new System.Globalization.CultureInfo("de-DE"));
 
ok,
in der Variable Date steht dann: 13.01.2012 23:00:00
es sollte aber 12.01.1323:00:00 stehen, das war das was ich nicht hinbekomme.
 
es sollte aber 12.01.1323:00:00 stehen, das war das was ich nicht hinbekomme.

Und warum? Ich verstehe ehrlich gesagt immernoch nicht so ganz was du vorhast.
Welches Format die Datetime objekte haben spielt doch eigentlich keine Rolle. Solange es das gleiche Format ist.
 
Das Format in der Datenbank ist ja yyMMddHHmmss
und dann brauch ich doch bei Date auch das Format oder?

also um darauf dann einen SELECT zu machen

SELECT status FROM latra WHERE bearbeitung Between ? and ?;
 
Aber dann suchst du doch eigentlich nach einer Möglichkeit ein Datetime objekt in einen string zu konvertieren und nicht anders rum.
C#:
DateTime date = new DateTime(2012,1,13,23,0,0);
string dateString = date.ToString("yyMMddHHmmss");
 
Zuletzt bearbeitet:
Du musst ja auch zwischen 06:00 und 23:00 uhr suchen
bzw zwischen 13.01.2012 23:00 und 14.01.2012 06:00
Da war der erste Post von rd4eva genau das richtige, danach musst du das date nur nochmal in ein String zurückschreiben und dann kannst du dein Befehl übergeben.

Wenn du des richtig auf SQL-Ebene machen möchtest, dann geht es so
Code:
DECLARE @datetimeStart datetime;
DECLARE @dateStart nvarchar(6);
DECLARE @timeStart nvarchar(6);

SET @dateStart = SUBSTRING('120114060000',1,6);
SET @timeStart = SUBSTRING('120114060000',7,12);

SET @datetimeStart = CONVERT(datetime,@dateStart
						+' '+SUBSTRING(@timeStart,1,2)
						+':'+SUBSTRING(@timeStart,3,2)
						+':'+SUBSTRING(@timeStart,5,2))
 
dankeschön euch beiden ich bin sooo dämlich,
warum es bei mir nach dem ersten post nicht funktioniert hat ich hab den Tag nicht raufgezählt, aber jetzt gehts.

danke nochmal
 
Zurück