Если Вы действительно просто хотите, чтобы он работал как диалоговое окно установки, что относительно того, чтобы просто дать фокус кнопке "Next" OnLoad. Тот путь, если пользователь поражает Возврат, форму, отправляет и продвигается. Если они хотят возвратиться, они могут поразить Вкладку или нажать на кнопку.
, если вы используете SQL Server,
dateadd (DAY, 0, datiff (day, 0, created))
вернет день создания
, например, если продажа создана '2009-11-02 06: 12: 55.000',
dateadd (DAY, 0, dateiff (day, 0, created))
return '2009-11-02 00: 00: 00.000'
select sum(amount) as total, dateadd(DAY,0, datediff(day,0, created)) as created
from sales
group by dateadd(DAY,0, datediff(day,0, created))
Для SQL Server:
GROUP BY datepart(year,datefield),
datepart(month,datefield),
datepart(day,datefield)
или быстрее (из Q8-Coder):
GROUP BY dateadd(DAY,0, datediff(day,0, created))
Для MySQL:
GROUP BY year(datefield), month(datefield), day(datefield)
или лучше (от Джона Брайта):
GROUP BY date(datefield)
Для Oracle:
GROUP BY to_char(datefield, 'yyyy-mm-dd')
или быстрее (от IronGoofy):
GROUP BY trunc(created);
Для Informix (от Джонатана Леффлера):
GROUP BY date_column
GROUP BY EXTEND(datetime_column, YEAR TO DAY)
Если вы ' при использовании MySQL:
SELECT
DATE(created) AS saledate,
SUM(amount)
FROM
Sales
GROUP BY
saledate
Если вы используете MS SQL 2008:
SELECT
CAST(created AS date) AS saledate,
SUM(amount)
FROM
Sales
GROUP BY
CAST(created AS date)
на самом деле это зависит от того, какую СУБД вы используете, но в обычном SQL convert (varchar, DateColumn, 101)
изменит формат DATETIME на дату (один день)
итак:
SELECT
sum(amount)
FROM
sales
GROUP BY
convert(varchar,created,101)
число magix 101
- это формат даты, в который он конвертируется
Для Oracle вы можете
group by trunc(created);
, так как это усекает созданное datetime до предыдущей полуночи.
Другой вариант -
group by to_char(created, 'DD.MM.YYYY');
, который дает тот же результат, но может быть медленнее, поскольку требует преобразования типа.
If you're using SQL Server, you could add three calculated fields to your table:
Sales (saleID INT, amount INT, created DATETIME)
ALTER TABLE dbo.Sales
ADD SaleYear AS YEAR(Created) PERSISTED
ALTER TABLE dbo.Sales
ADD SaleMonth AS MONTH(Created) PERSISTED
ALTER TABLE dbo.Sales
ADD SaleDay AS DAY(Created) PERSISTED
and now you could easily group by, order by etc. by day, month or year of the sale:
SELECT SaleDay, SUM(Amount)
FROM dbo.Sales
GROUP BY SaleDay
Those calculated fields will always be kept up to date (when your "Created" date changes), they're part of your table, they can be used just like regular fields, and can even be indexed (if they're "PERSISTED") - great feature that's totally underused, IMHO.
Marc