2017-02-05 2 views
-1

Ich habe eine Abfrage geschrieben, um die heutigen Daten aus der Datenbank zu erhalten.Abrufen von Daten aus der Datenbank basierend auf dem heutigen Datum

SqlDataAdapter da = new SqlDataAdapter(@"SELECT 
       Bill_Date as [Bill Date], 
       Customers.Name as [Customer Name], 
       Item, Item_Code as [Item Code], 
       MRP, Tax_Percentage as [Tax Percentage], 
       Quantity, Amount as Total, 
       Discount, Amount_After_Discount as [Grand Total], 
       Billing_Type as [Billing Type], 
       Transaction_Number as [Transaction Number] 
      FROM 
       POS 
      LEFT JOIN 
       Customers ON POS.Customer = Customers.Customer_Id 
      WHERE 
       Bill_Date = CAST(GETDATE() AS DATE)", con); 

Ich zeige das Ergebnis zu einem Datagridview. Aber nichts passiert. Es werden keine Daten abgerufen. Aber es gibt Daten in der Datenbank von heute.

+0

Code Unter der Annahme, dass Sie nicht funktioniert Ihr Problem gezeigt haben, ist, weil GETDATE kehrt Minuten, Sekunden, usw., und das wird nicht genau jede der gespeicherten Daten übereinstimmen. – Crowcoder

+0

Meine Rechnung_Datum Spalte in der Datenbank hat Datum und Uhrzeit. – Abhijith

+0

führen Sie Ihre Abfrage in SQL Server Management Studio. Ich habe Ihre Anfrage zuerst falsch gelesen, aber wie Gordon sagte, wenn Ihr Feld auch die Zeit enthält, wird es nicht gleich vergleichen. – Crowcoder

Antwort

3

Das ist Ihre Abfrage:

SELECT . . . 
FROM POS LEFT JOIN 
    Customers 
    ON POS.Customer=Customers.Customer_Id 
WHERE Bill_Date = CAST(GETDATE() AS Date); 

ich drei Gründe denken kann, warum dies alles nicht zurückkehren würde:

  • Es gibt keine Aufzeichnungen für das aktuelle Datum.
  • Bill_Date enthält die Uhrzeit sowie das Datum.
  • Bill_Date wird als Zeichenfolge gespeichert und kann nicht in ein Datum konvertiert werden.

Sie können die letzten beiden ziemlich einfach überprüfen. Zum zweiten:

WHERE cast(Bill_Date as date) = CAST(GETDATE() AS Date); 

Zum dritten:

select bill_date 
from <whatever> 
where try_convert(date, bill_date) is null; 
+0

thnks für die Antwort. Es gibt einen Datensatz für das aktuelle Datum. Die bill_date-Spalte hat den Datentyp datetime. ja bill_date Spalte speichert Datum mit Uhrzeit auch. – Abhijith

+1

vielen Dank. Casting-Rechnungsdatum als Datum funktionierte! :) – Abhijith

0

Termine sind Zeitpunkte so, wenn Sie jederzeit teilweise aus den Aufzeichnungen entfernt haben, wie Sie es erstellt werden Sie dies berücksichtigen müssen wenn Sie Ihre Daten abfragen. Im Allgemeinen verwende ich das Formular> = Datum und < (Datum + 1 Tag), da dies alle Zeitpunkte an einem Tag erfasst. In Ihrem Beispiel würde übersetzen, dies zu:

WHERE Bill_Date >= CAST(GETDATE() AS Date) AND Bill_Date < CAST((GETDATE() + 1) AS Date) 
+0

danke für die Antwort. – Abhijith

Verwandte Themen