Это лучше сделать как:
-- 7 Days:
set @n:=date(now() + interval 1 day);
SELECT qb.day_series as days , COALESCE(col_byte, 0) as Bytes from tbl1 qa
right join (
select (select @n:= @n - interval 1 day) day_series from tbl1 limit 7 ) as qb
on date(qa.Timestamp) = qb.day_series and
qa.Timestamp > DATE_SUB(curdate(), INTERVAL 7 day) order by qb.day_series asc
-- 30 Days:
set @n:=date(now() + interval 1 day);
SELECT qb.day_series as days , COALESCE(col_byte, 0) as Bytes from tbl1 qa
right join (
select (select @n:= @n - interval 1 day) day_series from tbl1 limit 30 ) as qb
on date(qa.Timestamp) = qb.day_series and
qa.Timestamp > DATE_SUB(curdate(), INTERVAL 30 day) order by qb.day_series asc;
или без переменной:
SELECT qb.day_series as days , COALESCE(col_byte, 0) as Bytes from tbl1 qa
right join (
select curdate() - INTERVAL a.a day as day_series from(
select 0 as a union all select 1 union all select 2 union all
select 3 union all select 4 union all
select 5 union all select 6 union all select 7
) as a ) as qb
on date(qa.Timestamp) = qb.day_series and
qa.Timestamp > DATE_SUB(curdate(), INTERVAL 7 day) order by qb.day_series asc;
VARCHAR 8000 и NVARCHAR 4000.
Вот ссылка Varchar MSDN:
http://msdn.microsoft.com/en-us/library/aa258242 (SQL.80). .Aspx
Страница данных SQL Server имеет 8к: 8192 байта. Из этой части зарезервировано для заголовка страниц, оставив 8060 байтов, максимальный Lnegth один ряд может иметь. В ряду вершины VARBARIANY (N), VARCHAR (N) и NVARCHAR (N) не могут превышать 8000 байтов, что означает, что Varchar (8000) является максимальным длиной ASCII, а Nvarchar (4000) - максимальная длина Unicode (поскольку Unicode хранит каждый персонаж на 2 байтах).
Лучшее объяснение всех этих деталей происходит из внутри механизма хранения: анатомии страницы .
Я следовал примеру Microsoft и не заметил, что объявления в GUI.Designer.cs (автоматически, по среде IDE) и в GUI.cs (вручную, из примера) являются избыточными.
=== GUI.cs ===
public GUI()
{
InitializeComponent();
this.lvwFiles.DragDrop += new System.Windows.Forms.DragEventHandler(this.lvwFiles_DragDrop);
this.lvwFiles.DragEnter += new System.Windows.Forms.DragEventHandler(this.lvwFiles_DragEnter);
}
=== GUI.Designer.cs ===
//
// lvwFiles
//
...
this.lvwFiles.DragDrop += new System.Windows.Forms.DragEventHandler(this.lvwFiles_DragDrop);
this.lvwFiles.DragEnter += new System.Windows.Forms.DragEventHandler(this.lvwFiles_DragEnter);
-121--4460381- Агрегат
- это подходящее место для начала:
SortedList<TKey, TSource> resultlist = new SortedList<TKey, TSource>();
MyBigList.Aggregate(resultlist, (aktlist,entry) => {
aktlist.Add(entry.Key, entry);
if (aktlist.Count > 10) aktlist.RemoveAt(10);
return aktlist;
});
Если требуется другой компаратор, можно указать его в конструкторе SortedList
.
EDIT Как указано nikie, SortedList
не может содержать двойных значений. Для достижения того же эффекта можно использовать стандартный список вместе с BinureSearch
:
List<TSource> resultlist = new List<TSource>();
MyBigList.Aggregate(resultlist, (aktlist, entry) => {
int index = aktlist.BinarySearch(entry);
if (index < 0) index = ~index;
if (index < 10) aktlist.Insert(index, entry);
if (aktlist.Count > 10) aktlist.RemoveAt(10);
return aktlist;
});
В качестве параметра для BinureSearch
снова можно использовать пользовательский компаратор (вместе с пользовательским выбором ключей).
Максимальный размер varchar (max) велик (2GB или 2Gchars, я думаю). Максимальное значение, которое можно задать для n в varchar (n), равно 8000, а для nvarchar - 4000.
Насколько я помню, это 8000 символов.
для Nvarchar это 4000.