- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
Select @clientMoney_DayEnd = coalesce([Money], 0.0)
FROM dbo.AccountOperation
where
OperationDateTime = (
select max(OperationDateTime)
from dbo.AccountOperation
where
cast(year(OperationDateTime) as varchar(4)) +
right('0' + cast(month(OperationDateTime) as varchar(2)), 2) +
right('0' + cast(day(OperationDateTime) as varchar(2)), 2) <=
(
select cast(datepart(year, max(QuoteDateTime)) as varchar(4)) +
right('0' + cast(datepart(month, max(QuoteDateTime)) as varchar(2)), 2) +
right('0' + cast(datepart(day, max(QuoteDateTime)) as varchar(2)), 2) + ' 23:59'
from CloseQuote
where
QuoteDateTime < dateadd(day, 1, @currDate)
) and
[Money] is not null and
ClientID = @clientID
) and
[Money] is not null and
ClientID = @clientID
order by ID desc
Разбить datetime на год, месяц, день. Отдельно каждое начение привести к чару, собрать из них строку даты... Ну и посравнивать ее с такой же шедеврашьной строкой...
А да... и все это в мега-курсоре для каждой даты...
Другой вариант для данной задачи, хотябы cast(OperationDateTime as date) cast(QuoteDateTime as date), неприемлем категорически:):):):):)::)
Dummy00001 28.03.2010 00:25 # +1.2
я на одном проекте уже раз потрахался: казалось тривиальной задачей до тех пор пока переходы на зимнее/летнее время не пришлось учитывать. с UTC это тривиально, но базы народ рутинно ставит работать в локальном времени.
хотя может здесь и реальное говно - я этого диалекта SQL не знаю.
guest 28.03.2010 22:04 # +2.2
guest 04.04.2010 00:58 # +1.2