Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с Smalldatetime [D5, MSSQL]


denmin ©   (2004-02-25 15:09:00) 

Здравствуйте. Проблема в следующем: есть SP, где идет выборка таким образом

DecodeDate (Now, Year, Month, Day);
DateYear:=StrToDate('01.01.'+IntToStr(Year));
Query4.Close;
Query4.Parameters.Items[1].Value:=DateYear;
Query4.Parameters.Items[2].Value:=Date;
Query4.ExecProc;

т.е. если брать 25 февраля, то dateyear будет 01.01.2004, а Date 25.02.2004.
В базе, из которой выьирается это поле, smalldatetime, т.е. ругается на несоответсвие типов, т.к. в базе 2004-01-01 00:00:00 и 2004-02-25 00:00:00 соответственно.
Помогите разобраться пожалуйста.
И если можно, то объясните мне почему в Enterprise Manager даты выглядят как 25.02.2004, а в QA 2004-02-25 00:00:00?


Ega23   (2004-02-25 15:50:00) [1]

Это TStoredProc что-ли? Никогда не пользовался...


sniknik   (2004-02-25 15:49:00) [2]

нет параметры передаются "as is", datetime так числом и пойдет.

а потом операции про которые говорил делаются не в sql-запросе, посмотри внимательнее на код.


Ega23   (2004-02-25 15:40:00) [3]

(операции с числами "легче" чем со строкой)
Это же параметр в SQL-запрос, один пёс к строке приводить придётся...


Ega23   (2004-02-25 15:34:00) [4]

1. smalldatetime - datetime с точностью до минут. Приводится обычным cast:
DateYear=cast(DateYear as smalldatetime)
2. Если в QA ты выборку сделаешь через
YourDate=Convert(varchar(10), YourDate, 104)
то ты то же самое увидишь, что и в EM.


sniknik   (2004-02-25 15:34:00) [5]

ругатся может потому что ты считаеш неправильно, с еденицы а программитский счет с 0. ;о)

разное представление даты зависит от настроек, системных, внутрипрограммых неважно. в своей можно поставить любое отображение хоть на иврите, дата(число) от этого не поменяется. почему у EM/QA должны быть ограничения?

> DecodeDate (Now, Year, Month, Day);
> DateYear:=StrToDate('01.01.'+IntToStr(Year));
а это зачем? не подобие этого StartOfTheYear() случаем? или если вдруг в 5 нет такой функции, DateYear:= EncodeDate(YearOf(Now), 1, 1); (операции с числами "легче" чем со строкой)


Наверх

Титульная страница Поиск, карта сайта Написать письмо