2016-03-18 5 views
0

Некоторая помощь будет оценена.Получение expiredate из таблицы, если оно равно или меньше, чем сегодня. SQL Server CE

У меня есть таблица tblItem с колоннами ExpireDate (DateTime), AlertDays (Int).

В каждую позицию I insert есть expiredate, Я хочу быть предупреждены в течение x дней до expiredate.

Я хочу рассчитать все пункты, где today + alertdays <= ExpireDate.

У меня есть следующий код, но он вызывает ошибку:

There was an error parsing the query. [ Token line number = 1,Token line offset = 48,Token in error = select ]

Пожалуйста, смотрите мой код:

internal static int getAlertDateExpire() 
{ 
    SqlCeConnection con = ConectionAndData.Con; 

    if (con.State == System.Data.ConnectionState.Closed) 
     con.Open(); 

    int number = 0; 

    string sqlCommand = "select count(*) from tblItem where (Getdate()+(select AlertDays from tblItem)) As today <= ExpireDate Order By ItemName ASC"; 

    SqlCeCommand com = new SqlCeCommand(sqlCommand, con); 

    try 
    { 
     number = (Int32)com.ExecuteScalar(); 
    } 
    catch (Exception ex) 
    { 
     throw ex; 
    } 
    finally 
    { 
     con.Close(); 
    } 

    return number; 
} 

ответ

0

У меня есть помощь и вы хотите поделиться своим мнением.

(select count(*) from tblItem where dateadd(day,AlertDays,getdate()) >= ExpireDate) 
0

Вы не можете добавлять дни только с помощью + использовать функцию DATEADD:

select count(*) from tblItem where 
DATEADD(day, (select AlertDays from tblItem) ,Getdate()) 
<= ExpireDate 
+0

Ashkan Mobayen: Я попробовал ваше предложение и получил это сообщение об ошибке: Произошла ошибка при разборе запроса. [Номер линии токена = 1, смещение линии токена = 50, токен в ошибке = выбор] –

+0

@PlazzaSele Я обновил код. и, кстати, для получения счета вам не нужен запрос 'order by'. –

+0

Ashkan: Спасибо за вашу помощь, но все еще вызывают ошибку: SqlCeException был пойман: произошла ошибка в разборе запроса. [Номер линии токена = 1, смещение линии токена = 50, токен в ошибке = выберите] –