2010-05-12 3 views
2

Я пытаюсь принести записи на основе двух дат из SQL-сервера ... Select * from table where CreatedDate between @StartDate and @EndDate и я прохожу 5/12/2010 и 5/12/2010 (то есть), забирающий записей на сегодняшний день ... Я 17 записей от 5/12/2010, но никто, кажется, не выбран ....с значение # DateTime Попутно на основе текущей даты

EDIT: Я использую это, но когда я отлаживать значение, которое он показывает 5/12/2010 12:00:00AM

DateTime baseDate = DateTime.Today; 
    var today = baseDate; 
    GetBookingReportByDate(today,today); 

Я использую это в C# и resusabl е хранимая процедура, которая принимает startdate и lastdate в качестве параметров,

DateTime baseDate = DateTime.Today; 

var today = baseDate; 
var yesterday = baseDate.AddDays(-1); 
var thisWeekStart = baseDate.AddDays(-(int)baseDate.DayOfWeek); 
var thisWeekEnd = thisWeekStart.AddDays(7).AddSeconds(-1); 
var lastWeekStart = thisWeekStart.AddDays(-7); 
var lastWeekEnd = thisWeekStart.AddSeconds(-1); 
var thisMonthStart = baseDate.AddDays(1 - baseDate.Day); 
var thisMonthEnd = thisMonthStart.AddMonths(1).AddSeconds(-1); 
var lastMonthStart = thisMonthStart.AddMonths(-1); 
var lastMonthEnd = thisMonthStart.AddSeconds(-1); 

Я использую эти значения и выборки записей на основе StartDate и lastdate ... Точно так же как StackOverflow Today,Yesterday,this week, last week,this month,Last month ....

ответ

4

Вы не сделали включают временную часть ... так что оба получают синтаксический анализ с одинаковым значением.

Понадобится:

SELECT * 
FROM Table 
WHERE CreatedDate >= '5/12/2010 00:00:00' 
    AND CreatedDate <= '5/12/200 23:59:59' 

Или:

SELECT * 
FROM Table 
WHERE CreatedDate >= @StartDate 
    AND CreatedDate <= DATEADD(day, 1, @StartDate) 

UPDATE

После просмотра вашего обновления, изменения запроса, как мой второй пример будет по-прежнему работать. Вы также можете внести изменения в свой код C#:

GetBookingReportByDate(today, today.AddDays(1)); 
+0

Посмотрите на мое редактирование i, передавая его с C# – 2010-05-12 17:53:03

+0

@chandru_cp - Я обновил свой ответ, чтобы уточнить. –

+0

для 'Вчера, на этой неделе, на прошлой неделе, в этом месяце, в прошлом месяце' мне нужно что-то менять – 2010-05-12 18:06:41

2

Проблема в том, что SQL сравнивает дату и время. Таким образом, вы переводите запрос на CreatedDate Between '2010-05-12 00:00:00.000' And '2010-05-12 00:00:00.000'. Вместо этого вы должны сделать что-то вроде:

CreatedDate >= @StartDate And CreatedDate < DateAdd(d,1,@EndDate).

1

Попробуйте вместо этого:

Select * 
from table 
where CreatedDate >= @StartDate 
    and CreatedDate < @EndDate 

и установить @EndDate на "завтра"

0

Если вы не хотите, чтобы изменить оператор SQL, вы можете изменить C# как это:

GetBookingReportByDate(today,today.AddDays(1)); 
+0

@Adam для 'Вчера, на этой неделе, на прошлой неделе, в этом месяце, в прошлом месяце' мне нужно изменить любую вещь – 2010-05-12 18:03:00

Смежные вопросы