|
|
|
Как сделать инкремент года?
|
|||
|---|---|---|---|
|
#18+
У меня такой вопрос, как в InterBase сделать инкремент года в данные типа TIMESTAMP? Я извлёк год, месяц, день методом extract(year from DatetimeField) as YEAR_V extract(month from DatetimeField) as MONTH_V extract(day from DatetimeField) as DAY_V потом YEAR_V = YEAR_V + 1 и теперь не знаю как собрать все данные в тип TIMESTAMP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2003, 15:39 |
|
||
|
Как сделать инкремент года?
|
|||
|---|---|---|---|
|
#18+
Сложи все (день, месяц и год) в строку (не забудь разделители для даты) и вставь ее в оператор INSERT, UPDATE напр. для года: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2003, 16:30 |
|
||
|
Как сделать инкремент года?
|
|||
|---|---|---|---|
|
#18+
у меня дата в формате "гггг.мм.дд". Я бы мог записать в этом формате ... ну а если поменяют формат, я бы не хотел бы менять код. И еще дело в том, что мне и не надо записать в базу. Мне надо прочитать дату из базы добавить 1,2,3... года к этой дате. Пример: Задаю процедуре дату 2006.06.06 и я должен прочитать из базы DATAFIELD допустим значение 2000.05.25 добавить к этой дате 3 года и проверить больше или меньше Можно в процедуре сделать как-то инкремент дате DATAFIELD ??? или как собрать заново дату? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2003, 17:25 |
|
||
|
Как сделать инкремент года?
|
|||
|---|---|---|---|
|
#18+
Дата в IB хранится одним определенным форматом (правда клонов развелось... может что новое есть, но вряд ли) см. ниже - это просто ф-ии для приложения, переводящие дату в то, что есть в IB. Это было нужно для одной ерунды при использовании "like". По моему, в твоем случае достаточно собрать куски в такой же вид, а он всегда один и тот же. Function DateToIbDate(InDateTime: TDateTime): String; var Year, Month, Day: Word; TMP: string; begin DecodeDate(InDateTime, Year, Month, Day); if Month=1 then TMP:='-JAN-'; if Month=2 then TMP:='-FEB-'; if Month=3 then TMP:='-MAR-'; if Month=4 then TMP:='-APR-'; if Month=5 then TMP:='-MAY-'; if Month=6 then TMP:='-JUN-'; if Month=7 then TMP:='-JUL-'; if Month=8 then TMP:='-AUG-'; if Month=9 then TMP:='-SEP-'; if Month=10 then TMP:='-OCT-'; if Month=11 then TMP:='-NOV-'; if Month=12 then TMP:='-DEC-'; DateToIbDate:=IntToStr(Day)+TMP+IntToStr(Year); end; Function DateToIbDate_Month_and_Year(InDateTime: TDateTime): String; var Year, Month, Day: Word; TMP: string; begin DecodeDate(InDateTime, Year, Month, Day); if Month=1 then TMP:='-JAN-'; if Month=2 then TMP:='-FEB-'; if Month=3 then TMP:='-MAR-'; if Month=4 then TMP:='-APR-'; if Month=5 then TMP:='-MAY-'; if Month=6 then TMP:='-JUN-'; if Month=7 then TMP:='-JUL-'; if Month=8 then TMP:='-AUG-'; if Month=9 then TMP:='-SEP-'; if Month=10 then TMP:='-OCT-'; if Month=11 then TMP:='-NOV-'; if Month=12 then TMP:='-DEC-'; DateToIbDate_Month_and_Year:=TMP+IntToStr(Year); end; Function DateToIbDate_Year(InDateTime: TDateTime): String; var Year, Month, Day: Word; begin DecodeDate(InDateTime, Year, Month, Day); DateToIbDate_Year:=IntToStr(Year); end; by ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2003, 22:12 |
|
||
|
Как сделать инкремент года?
|
|||
|---|---|---|---|
|
#18+
extract(year from DatetimeField) as YEAR_V extract(month from DatetimeField) as MONTH_V extract(day from DatetimeField) as DAY_V потом YEAR_V = YEAR_V + 1 потом Код: plaintext Сам не пробовал, но получить дату возможно таким способом. Если хочешь TIMESTAMP, то дополняешь строку временем и меняешь DATE на TIMESTAMP. Результат: вводим 2000.05.25, добавляем 1 год (YEAR_V = YEAR_V + 1) и формируем строку '2001.05.25', которую затем приводим к типу DATE (только не уверен насчет форматов - обычно дд.мм.гггг для России - тогда переверни строку к нужному формату) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2003, 09:58 |
|
||
|
Как сделать инкремент года?
|
|||
|---|---|---|---|
|
#18+
Спасибо ребята я уже сделал. Я не знал как работает функция CAST . А для тех кто еще заинтересует этот вопрос кидаю код. И к стати он работает для любого формата даты, поскольку формат даты INTERBASE не в зависимости от формата системы. (Процедура инкрементирует год с заданном значением) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2003, 10:22 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32190844&tid=1580331]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
191ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 247ms |
| total: | 541ms |

| 0 / 0 |
