DateTime aus .NET zu smalldatetime in der SQL - wie Abfragen?

Ich habe eine DateTime Bestandteil in meinem code, und ich möchte es verwenden, für eine Abfrage in meiner SQL-Server-Datenbank.

Beim einfügen dieser Komponente, es scheint kein problem zu sein, aber bei der Abfrage nach smalldatetime Werte, ich weiß nur nicht, wie es zu tun. Das dataset ist immer noch leer.

cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "ReadDates"; 

dataset = new DataSet();

SqlParameter parameter = new SqlParameter("@date", SqlDbType.SmallDateTime);
parameter.Value = DateTime.Now();
cmd.Parameters.Add(parameter);

dataAdapter = new SqlDataAdapter(cmd);
dataAdapter.Fill(dataset);
return dataset;

- Und dies ist in meinen gespeicherten Prozedur:

select * from TableDates
where ValueDate <= @date

Also ich habe keine Probleme beim ausführen der Prozedur in SQL Server Management Studio bei der Eingabe der parameter in diesem format: '2000-03-03 04:05:01', aber bei der übergabe einer DateTime, die Abfrage ist immer leer. Irgendwelche Vorschläge?

  • Konnte Sie zeigen, dass Ihre gesamten gespeicherten Prozedur-Deklaration, einschließlich der parameter-Erklärung?
  • Oder wenn Sie mithilfe von SQL 2012 Sie können CAST(@Date AS DATE) für beide ValueDate und @date um sicherzustellen, die Zeit-Komponente wird entfernt.
  • das ist wahrscheinlich die SCHLECHTESTE EVER Beratung! Wenn Sie eine DateTime - sollten Sie versuchen, verwenden Sie native Datum/Uhrzeit-Datentypen, Wann immer möglich, auf vermeiden konvertieren und zurück in einen string!
  • richtig ist select * from TableDates where CAST(ValueDate AS DATE) <= @date
  • Nur als eine Seite-Hinweis - in Ihrem Beispiel, der Teil war '04:05:01'. laut MSDN, System.Daten.SqlDbType.SmallDateTime ignoriert die Sekunden, so sollten Sie vielleicht die Verwendung von System.Daten.SqlDbType.DateTime statt. Quelle - msdn.microsoft.com/en-us/library/aa258277(v=sql.80).aspx
  • es versucht, hat nicht geholfen. Darth Contintent: sorry, SQL 2008
  • Ok, versuchen Sie diese dann: Anstatt die DateTime.Jetzt() parameter.Wert, versuchen Sie, System.DateTime.Nun.Datum. Dies wird feed der date-Teil nur.
  • Nicht CAST(@Date AS DATE) Arbeit auf SQL 2008 als gut? Ich weiß, es funktioniert auf 2008R2.
  • parameter.SqlDbType = SqlDbType.SmallDateTime? Vielleicht DbType wird immer zurückgesetzt, wenn die Einstellung den Wert.
  • Auch CAST funktioniert, aber immer noch nicht helfen, das problem. Auch versucht vorbei die DateTime.Nun.Datum, jetzt helfen.
  • Wenn Sie eine gespeicherte Prozedur erstellen, der einfach nur druckt der smallDateTime-parameter funktioniert das?
  • Können Sie bitte den aktuellen code? Der aktuelle code hat mindestens 1 compile-Zeit-Fehler - parameter.Value = DateTime.Now(); sollte parameter.Value = DateTime.Now;
  • Hässlich, aber können Sie versuchen, das senden dieser anstelle von Datetime.Jetzt? new DateTime(DateTime.Heute.Year, DateTime.Heute.Month, DateTime.Heute.Tag, DateTime.Nun.Stunde, ((DateTime.Nun.Zweite + (DateTime.Nun.Millisekunden / 1000)) > 29.998) ? DateTime.Nun.Minute + 1 : DateTime.Nun.Minute, 0);

InformationsquelleAutor Kajzer | 2013-01-02
Schreibe einen Kommentar