2017-02-05 12 views
-1

今日のデータをデータベースから取得するためのクエリを作成しました。今日の日付に基づいてデータベースからデータを取得する

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); 

私は結果をdatagridviewに表示しています。しかし、何も起こりません。データは検索されません。しかし、今日のデータベースにはデータがあります。

+0

GETDATEが分、秒などを返し、格納された日付と正確に一致しないため、あなたの問題はうまくいきません。 – Crowcoder

+0

データベースの私のbill_date列に日付と時刻があります。 – Abhijith

+0

SQL Server管理スタジオでクエリを実行します。私は最初にあなたの質問を誤解しましたが、あなたのフィールドにも時間が含まれていれば、それは同等ではないとGordonは言っています。応答のために – Crowcoder

答えて

3

これはあなたのクエリです:

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

私は、これは何も返さないだろう3つの理由を考えることができます。

  • 現在の日付のレコードがありません。
  • Bill_Dateには、時刻と日付が含まれています。
  • Bill_Dateは文字列として格納され、日付に変換することはできません。

最後の2つをかなり簡単に確認できます。第二の場合:第三のために

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

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

thnks。 現在の日付のレコードがあります。 bill_date列はdatetimeデータ型です。 yes bill_date列には、日付も時間とともに格納されます。 – Abhijith

+1

ありがとうございます。日付を鋳造した日付を加工しました! :) – Abhijith

0

日付はあなたが記録から任意の時刻部分を削除した場合を除きので、時間内のポイントは、あなたがそれを作成したとして、あなたはこれを考慮に入れる必要がありますされていますあなたのデータを照会するとき。 一般的には、> = dateと<(date + 1day)の形式を使用します。これは、1日のすべての時点を取得するためです。あなたの例では、これは次のように翻訳されます:

+0

答えに感謝します。 – Abhijith

関連する問題