|
Проблема работы с DATETIME...
|
|||
---|---|---|---|
#18+
Уважаемые господа! Требуется помощь по решению проблемы работы с датой и временем. В базе имеется таблица, в таблице есть поле суть DATETIME (TIMESTAMP). По спецификации требуется, чтобы работа с этим полем велась посредством двух контролов – в одном дата, в другом время. Замечу, что проект разрабатывается для работы с тремя СУБД: ASA, MS SQL-Server, Oracle. Одно из возможных (на мой взгляд) решений состоит в следующем... В SQL-запрос помещаются два computed field’а ссылающиеся на ту самую колонку, которую надо редактировать. Эти два поля помещаются на датавинду. Для первого поля задается формат [shotdate], для второго [time] (формат устанавливается как для редактирования, так и для отображения). При изменении даты (первое поле) происходит сброс времени в 00:00:00. При этом полученое занчение даты-времени является вполне валидным. При изменении же времени (второе поле) происходит сброс даты в 00.00.0000. Полученое значение даты-времени является невалидным. Чтобы избежать невалидности на событие ItemError была закодирована подстановка ненулевой даты. НО!!! Оказалось, что не всякое значение времени ведет к сбросу даты в ноль. Например, если ввести значение времени 13:13:13, то получим 00.00.0000 13:13:13. А если ввести, например, 11:11:11 то в результате получим что-то вроде этого – 11.11.2011 00:00:00 (введенное время сбросилось, «перейдя» в дату). И так, теперь собственно вопрос – можно ли бороться с данным «феноменом» (и если можно, то как)? Возможно существует и принципиально иные подходы к решению поставленной выше задачи. Если кто сталкивался, посоветуйте, пожалуйста. Но еще раз отмечу, что приложение разрабатывается для работы с тремя СУБД, и крайне желательно, чтобы сам SQL-запрос был унифицированным для всех трех СУБД. Ну и на всякий случай приведу версию среды разработки: Sybase PowerBuilder Enterprise Version 9.0.1 Build 7048 Заранее благодарю. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2004, 12:28 |
|
Проблема работы с DATETIME...
|
|||
---|---|---|---|
#18+
Насколько я работал с полем TIMESTAMP оно является не совсем полем даты и времени, поэтому работать с ним как с датой и временем - затруднительно. С DateTime с таким никогда не сталкивался. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2004, 13:29 |
|
Проблема работы с DATETIME...
|
|||
---|---|---|---|
#18+
И еще. "Перескакивает" оно у вас в DataWindow или в базе? Если в DataWindow, то это должно делаться каким-то скриптом в котором содержится какая-то ошибка. Сами по себе они никак не связаны, хоть и создавались из одного поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2004, 13:46 |
|
Проблема работы с DATETIME...
|
|||
---|---|---|---|
#18+
gerss В Sybase ASA DATETIME - домен, который на самом деле является TIMESTAMP, что вполне равноценно, так как TIMESTAMP хранит так же, как и DATETIME дату и время. Это автор и имел ввиду. Antoxa Можно попробовать так: в запросе возвращать само поле DATETIME и 2 вычисляемых поля, полученных с DATETIME, выщемляя в первое поле дату и приводя к типу DATE (DATETIME для MSSQL), а во второе поле время, но приводя к типу VARCHAR(5). Тогда редактирование времени можно будет легко сделать через EditMask (##:##). Соотвествующе после изменения любого из этих вычисляемых полей можно легко собрать дату и время как DATETIME и занести значение в исходное поле, которое потом и будет писаться PB в таблицу. Для проверки введенного времени можно также написать свою функцию и нацепить ее на проверку колонки времени в DataWindow. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.01.2004, 14:09 |
|
|
start [/forum/topic.php?fid=15&fpage=110&tid=1339347]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
65ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 183ms |
0 / 0 |