SELECT SUM(CF_BOND_OPERATION.END_DEBT_NOMINAL) AS summa, CONVERT(DATETIME, CF_BOND_OPERATION.END_DATE, 104) AS dateEnd
FROM CF_BOND_OPERATION INNER JOIN
CF_BOND_ISSUE ON CF_BOND_OPERATION.BOND_NUM = CF_BOND_ISSUE.BOND_NUM INNER JOIN
CF_TYPE_DEBT ON CF_BOND_ISSUE.TYPE_DEBT = CF_TYPE_DEBT.CODE
WHERE (CF_TYPE_DEBT.CODE = 2)
GROUP BY CONVERT(DATETIME, CF_BOND_OPERATION.END_DATE, 104)
Все бы хорошо, но он почему то не конвертит дату, хотя ошибок не выдает =(
Мне нужно, чтобы дата была в формате dd.MM.yyyy
..хм.. да заработало, но мне потом еще нужно по этой дате условие делать... то есть мне надо после этого опять его в дату сконвертить, например, для того чтобы выбрать начиня с 01.01.2005?
Здравствуйте, EyfelFenk, Вы писали:
EF>..хм.. да заработало, но мне потом еще нужно по этой дате условие делать... то есть мне надо после этого опять его в дату сконвертить, например, для того чтобы выбрать начиня с 01.01.2005?
EF>..хм.. да заработало, но мне потом еще нужно по этой дате условие делать... то есть мне надо после этого опять его в дату сконвертить, например, для того чтобы выбрать начиня с 01.01.2005?
Ну по идее — да. А зачем тебе надо дату в строку преобразовывать? Ты же во вьюху выборку делаешь?
А преобразование строки в дату делается обраиным методом:
convert (datetime,'11.01.2005')
Перед тем, как улучшиться, ситуация ухудшается. (из законов Мерфи)
Здравствуйте, tpg, Вы писали:
tpg>Здравствуйте, EyfelFenk, Вы писали:
EF>>..хм.. да заработало, но мне потом еще нужно по этой дате условие делать... то есть мне надо после этого опять его в дату сконвертить, например, для того чтобы выбрать начиня с 01.01.2005?
tpg>http://www.sql.ru/faq/faq_topic.aspx?fid=109
Здравствуйте, Macr0s, Вы писали:
M>Здравствуйте, EyfelFenk, Вы писали:
EF>>..хм.. да заработало, но мне потом еще нужно по этой дате условие делать... то есть мне надо после этого опять его в дату сконвертить, например, для того чтобы выбрать начиня с 01.01.2005?
M>Ну по идее — да. А зачем тебе надо дату в строку преобразовывать? Ты же во вьюху выборку делаешь? M>А преобразование строки в дату делается обраиным методом: M>
M>convert (datetime,'11.01.2005')
M>
мне надо обрудить у даты время и делать сравнение в суловии where тока по дате, без времени....
вот сделал таким изратом
SELECT SUM(CF_BOND_OPERATION.END_DEBT_NOMINAL) AS summa, CONVERT(datetime, CONVERT(varchar(30), CF_BOND_OPERATION.END_DATE, 104),
104) AS dateEnd
FROM CF_BOND_OPERATION INNER JOIN
CF_BOND_ISSUE ON CF_BOND_OPERATION.BOND_NUM = CF_BOND_ISSUE.BOND_NUM INNER JOIN
CF_TYPE_DEBT ON CF_BOND_ISSUE.TYPE_DEBT = CF_TYPE_DEBT.CODE
WHERE (CF_TYPE_DEBT.CODE = 2) AND (CONVERT(datetime, CONVERT(varchar(30), CF_BOND_OPERATION.END_DATE, 104), 104) < CONVERT(datetime,
'01.09.2005', 104))
GROUP BY CONVERT(datetime, CONVERT(varchar(30), CF_BOND_OPERATION.END_DATE, 104), 104)
Здравствуйте, tpg, Вы писали:
tpg>Здравствуйте, EyfelFenk, Вы писали:
EF>>мне надо обрудить у даты время и делать сравнение в суловии where тока по дате, без времени....
tpg>http://www.sql.ru/faq/faq_topic.aspx?fid=110
tpg>Но, если есть индекс и хочется его использовать, то лучше так не делать, а делать выборку в диапазоне.
у меня жестроке условие как выяснилось то есть строго равно определенной дате тогда впринципе можно и не конверить заного а дату, а сравнивать varchar =)
Здравствуйте, EyfelFenk, Вы писали:
EF>Здравствуйте, tpg, Вы писали:
tpg>>Здравствуйте, EyfelFenk, Вы писали:
EF>>>мне надо обрудить у даты время и делать сравнение в суловии where тока по дате, без времени....
tpg>>http://www.sql.ru/faq/faq_topic.aspx?fid=110
tpg>>Но, если есть индекс и хочется его использовать, то лучше так не делать, а делать выборку в диапазоне.
EF>у меня жестроке условие как выяснилось то есть строго равно определенной дате тогда впринципе можно и не конверить заного а дату, а сравнивать varchar =)
OK!
А теперь сравните план, а заодно и стоимость, вот этих двух запросов:
use Northwind
GO
select * from dbo.Orders
where OrderDate >='19961007'
and OrderDate <'19961008'
GO
select * from dbo.Orders
where convert(varchar, OrderDate, 112)='19961007'