2012-02-12 2 views
0

Я работаю над ASP.NET_C# ПриложениемSQL; Плюс + или минус - вместо дат (ASP.NET-C#)

Я вытаскиваю некоторые формы формы SQL в виде сетки.

Но вместо тех дат, мне нравится видеть, как месиво «Плюс +» или «минус» - это форма Сегодняшняя дата.

Для примера

Текущая дата = 11/02/2012

Если дата из SQL является 07/02/2012, мне нравится моя Сетка показать -4

Или

Если Дата от SQL 17/02/2012, мне нравится моя сетка, чтобы показать +6

Пожалуйста, помогите мне, как мне это сделать ....

Это мой SQL-запрос; То, что я работаю с

SELECT MAX(AmountPay.DateUpto) AS [ PaidUpTo], TimeTable.Name, TimeTable.Ref, TimeTable.Time11to12 FROM AmountPay FULL OUTER JOIN TimeTable ON AmountPay.Ref = TimeTable.Ref WHERE (TimeTable.Time11to12 = @Time11to12) GROUP BY TimeTable.Name, TimeTable.Ref, TimeTable.Time11to12 

AmountPay.DateUpto является дата Мне нравится видеть, как + или -

Я предлагавшиеся DATEDIFF функции; и я использовал функцию датиффа для разработки таких вещей, как «Возраст с даты рождения», но я не могу это сделать; как я могу использовать это в случае Заранее спасибо

+2

Вам не нужен 'CASE'. Если вы используете 'DateDiff' с' dd', он автоматически вернет число разностей дней (с соответствующими знаками +/-). Поскольку вы не показывали, где хотите разницу дней, или какое имя столбца вы хотели бы отличить от сегодняшней даты, я не могу предложить фактический SQL, чтобы помочь. –

ответ

0
SELECT DATEDIFF(day,GetDate(), MAX(AmountPay.DateUpto)) AS [ PaidUpTo], TimeTable.Name, TimeTable.Ref, TimeTable.Time11to12 FROM AmountPay FULL OUTER JOIN TimeTable ON AmountPay.Ref = TimeTable.Ref WHERE (TimeTable.Time11to12 = @Time11to12) GROUP BY TimeTable.Name, TimeTable.Ref, TimeTable.Time11to12 
1

Вы можете использовать Timespan

DateTime oldDate = DateTime.Now.AddDays(-4); 
DateTime today = DateTime.Now; 

TimeSpan span = oldDate.Subtract(today); 
string diff = span.Days.ToString(); 
1

Поскольку вы используете MySQL, ваш оператор выбора должен быть как:

SELECT DATEDIFF(CURDATE(), MAX(AmountPay.DateUpto)) AS [ PaidUpTo], 
    TimeTable.Name, 
...... 

DATEDIFF даст вы оцениваете значения -1, 1, -5 ..., и ваш DataGridView должен отображать эти значения просто отлично.