![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MSSQL2000. Возврат значения поля даты - мм.дд.гггг [D7, XP]
Vlad Oshin © (2007-04-12 14:42:00)Локальные настройки правильные.дд.мм.гггг
На сервере() время правильно(системное)
Как начинаю сравнивать
if ADOQueryDa.FieldByName('DateOff').AsDateTime > tdatetime(now)
then ttemS:='<img src="../images/new3.gif" border="0">'
else ttemS:='';
так и выясняется, что он принимает дату иначе чем дд.мм.гггг
Надо сказать чтоб было дд.мм.гггг
как?
Vlad Oshin (2007-04-12 19:13:00) [1]:)
во временные, потом назад более корректно
Спасибо еще раз,
и извинения :)
Desdechado (2007-04-12 18:27:00) [2]> Перегнал все таблицы
В сибирь?
Vlad Oshin (2007-04-12 18:24:00) [3]спасибо, разобрался. Перегнал все таблицы
Плохиш (2007-04-12 17:03:00) [4]
> SlymRO © (12.04.07 16:47) [12]
> Плохиш © (12.04.07 16:44) [9]
> даты в виде текста
> FieldByName('DateOff').Asdatetime
Это уже читают результат работы того горе-программиста.
SlymRO (2007-04-12 16:59:00) [5]if not (ADOTable1.FieldByName('DateOff').DataType in [ftDate, ftTime, ftDateTime]) then raise exception.cre...
Johnmen (2007-04-12 16:53:00) [6]
> SlymRO © (12.04.07 16:47) [12]
>> Плохиш © (12.04.07 16:44) [9]
>> даты в виде текста
>FieldByName('DateOff'). Asdatetime
Это ничего не значит.
SlymRO (2007-04-12 16:47:00) [7]Плохиш © (12.04.07 16:44) [9]
даты в виде текста
FieldByName('DateOff'). Asdatetime
SlymRO (2007-04-12 16:46:00) [8]Int(Now)?
Desdechado (2007-04-12 16:46:00) [9]Тогда остается выяснить тип поля DateOff, которое содержится в наборе данных. Если оно у тебя строковое, тогда могут быть проблемы.
ЗЫ А вопросы ты задавать не умеешь, так же как и отвечатьна наводящие. Не все на твоей волне гуляют.
Плохиш (2007-04-12 16:44:00) [10]
> Vlad Oshin © (12.04.07 16:04) [4]
>
> > Чему равно значение ADOQueryDa.FieldByName('DateOff').
> AsDateTime?
>
> 04.12.2007, т.е. мм.дд.ггггг
> 12.04.2007 должно быть, т.е дд.мм.гггг
Есть подозрение, что какой-то горе-программист в базу вальнул эти даты в виде текста в запросе, а о форматах представления дат понятия не имел.
Vlad Oshin (2007-04-12 16:37:00) [11]
> Во-первых, не надо tdatetime(now), достаточно просто now.
>
по идеи да, и так и было, это я потом привел
> Во-вторых, не забывай что DateTime содержит и время, соответственоо
> если у тебя в ('DateOff').AsDateTime просто дата без времени(например
> сегодня), то она всегда будет меньше now.
log(floattostr(ADOQuery1.FieldByName('DateOff').Asdatetime)+' '+floattostr(tdatetime(now)));
39420 > 39183,6869014005
> Johnmen © (12.04.07 16:17) [6]
выше, если числа приводить
stone (2007-04-12 16:22:00) [12]
> Vlad Oshin © (12.04.07 16:16) [5]
Давай мухи отдельно - котлеты отдельно.
> if ADOQueryDa.FieldByName('DateOff').AsDateTime > tdatetime(now)
Во-первых, не надо tdatetime(now), достаточно просто now.
Во-вторых, не забывай что DateTime содержит и время, соответственоо если у тебя в ('DateOff').AsDateTime просто дата без времени(например сегодня), то она всегда будет меньше now.
> но хочется по-человечески, наглядно. Чтоб открыть таблицу,
> и видно было - это тогда было занесено, это тогда и т.п.
>
> Если что - ручками чтоб мог человек, далекий от всего этого,
> переправить в дбгриде.
Для этого у поля существуют свойства DisplayFormat и EditFormat
Johnmen (2007-04-12 16:17:00) [13]
> Vlad Oshin © (12.04.07 16:04) [4]
> > Чему равно значение ADOQueryDa.FieldByName('DateOff').AsDateTime?
> 04.12.2007, т.е. мм.дд.ггггг
Каким образом численное значение м.б. равно строковому?
Vlad Oshin (2007-04-12 16:16:00) [14]
> stone © (12.04.07 15:51) [3]
да это понятно,
вот и спрашиваю, как?
как привести к
> к одинаковому формату.
сначала заносил - insert into .. values ( ..,datetime(now), ..)
теперь сравниваю
if ADOQueryDa.FieldByName('DateOff').AsDateTime > tdatetime(now)
может есть что-то типа ADOQueryDa.formatdate(формат)?
PS
Да я бы не спрашивал, сделал бы
> число с чилом
придумал бы какие-нибудь, типа, datetofloat
но хочется по-человечески, наглядно. Чтоб открыть таблицу, и видно было - это тогда было занесено, это тогда и т.п.
Если что - ручками чтоб мог человек, далекий от всего этого, переправить в дбгриде.
Vlad Oshin (2007-04-12 16:04:00) [15]
> Чему равно значение ADOQueryDa.FieldByName('DateOff').AsDateTime?
04.12.2007, т.е. мм.дд.ггггг
12.04.2007 должно быть, т.е дд.мм.гггг
> Desdechado © (12.04.07 15:22) [1]
> 1где у тебя тут "он принимает дату иначе чем дд.мм.гггг"?
> 2Кто "он"? 3Кому "Надо сказать"?
1 наверное, сервер sql, может и ado гдето внутри, не знаю, потому и спрашиваю
потому как равенство на сегодняшнюю дату не выполняется
ADOQueryDa.FieldByName('DateOff').AsDateTime > tdatetime(now)
2 наверное он же
3 наверное ему же
Йо! Что ж непонятного: ответ приходит не в том формате - не дд.мм.гггг, а мм,дд,гггг. Надо гдето что-то прописать или в программе или на сервере, или еще гдето.
ну, я так думаю.
не, правда, неужели непонятно написан был вопрос?
тогда, да, надо мне поучится задавать вопросы..
stone (2007-04-12 15:51:00) [16]
> так и выясняется, что он принимает дату иначе чем дд.мм.
> гггг
Естественно, дата она вообще-то число с плавающей точкой. Все эти дд.мм.гггг лишь графическое отображение. Соответственно, либо сравнивай число с чилом (не забывай, что она еще и время содержит полсе запятой), либо приводи к одинаковому формату.
Ega23 (2007-04-12 15:26:00) [17]
> tdatetime(now)
Зачем???
> if ADOQueryDa.FieldByName('DateOff').AsDateTime > tdatetime(now)
Чему равно значение ADOQueryDa.FieldByName('DateOff').AsDateTime?
Desdechado (2007-04-12 15:22:00) [18]Йо! Ты давно уже вопросы задаешь, а все как в детсаду...
И где у тебя тут "он принимает дату иначе чем дд.мм.гггг"? Кто "он"? Кому "Надо сказать"?