SQL;Плюс + или минус - вместо дат (ASP.NET-C #) - PullRequest
0 голосов
/ 12 февраля 2012

Я работаю над приложением ASP.NET_C #

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

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

Например

Сегодняшняя дата = 02.02.2012

Если Date from SQL - 07/02/2012, мне нужно, чтобы моя сетка показывала -4

Или

Если Date from 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; и я использовал функцию datediff для определения таких вещей, как возраст от даты рождения, но я не могу работать; как я могу использовать это в случае Заранее спасибо

Ответы [ 3 ]

1 голос
/ 12 февраля 2012

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

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

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

1 голос
/ 12 февраля 2012

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

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

TimeSpan span = oldDate.Subtract(today);
string diff = span.Days.ToString();
0 голосов
/ 12 февраля 2012
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
...