Search code examples
c#sql-serverlinq-to-sqldatetimepicker

Linq-to-SQL date format: query does not work


I have a stored procedure when I am executing this query in SQL Server

exec SelectOfficeNameGroup  '2011-10-05', '2011-11-09', ''

it returns 110 rows.

Now I have two datepicker on my c# 3.5 form and one button which executes the query like this:

var result = context.SelectOfficeNameGroup(dateTimePickerFrom.Value, dateTimePickerTo.Value, "");

but its only returns 2 rows.

My date picker's format is MM/DD/YYYY

This is my procedure

ALTER PROC [dbo].[SelectOfficeNameGroup]
  @From datetime,
  @To datetime,
  @OfficeName nvarchar(50)
AS
BEGIN
   SELECT
      ID AS ProductID, OfficeName,  
      SUM(Quantity) AS Quantity, 
      SUM(TotalPrice) AS TotalPrice, 
      Category
   FROM
      ProductLogWithCategory 
   WHERE 
      DateTime BETWEEN @From AND @To AND OfficeName = @OfficeName
   GROUP BY 
      OfficeName, ID, Category

  return
END

Any advice?


Solution

  • Try with

    var result = context.SelectOfficeNameGroup(dateTimePickerFrom.Value.ToString("yyyy-MM-dd"), dateTimePickerTo.Value.ToString("yyyy-MM-dd"), "");
    

    Have a look at the DateTime.ToString documentation


    Update

    Just to be on the safe side try

    ALTER PROC [dbo].[SelectOfficeNameGroup]
      @From varchar(8),
      @To varchar(8),
      @OfficeName nvarchar(50)
    AS
    BEGIN
       SELECT
          ID AS ProductID, OfficeName,  
          SUM(Quantity) AS Quantity, 
          SUM(TotalPrice) AS TotalPrice, 
          Category
       FROM
          ProductLogWithCategory 
       WHERE 
          DateTime BETWEEN @From AND @To AND OfficeName = @OfficeName
       GROUP BY 
          OfficeName, ID, Category
    
      return
    END
    

    and use it like this

    from sql

    exec SelectOfficeNameGroup  '20111005', '20111109', ''
    

    from linq

    var result = context.SelectOfficeNameGroup(dateTimePickerFrom.Value.ToString("yyyyMMdd"), dateTimePickerTo.Value.ToString("yyyyMMdd"), "");