|
Нормализация некорректно введенных в dbf дат
|
|||
---|---|---|---|
#18+
Задача: Есть таблица в формате foxpro dbf -> поле тип date , например mydate --------------- 12/30/1899 12/30/1199 12/30/1699 12/30/0801 и .т.д. первые две цифры года некоректны, корректны вторые, причём 01,02,03 относится к нашему веку, а 99, 79 и т.д. к прошлому. Надо получить: mydate --------------- 12/30/1999 12/30/1999 12/30/1999 12/30/2001 Наверняка, кто то сталкивался, есть ли код ? P.S. на фокспро давно уже не программирую ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2008, 12:28 |
|
Нормализация некорректно введенных в dbf дат
|
|||
---|---|---|---|
#18+
Ну, наверное, как-то так: CREATE CURSOR temp(date d) SET DATE AMERICAN INSERT INTO temp (date) VALUES ({12/30/1899}) INSERT INTO temp (date) VALUES ({12/30/1199}) INSERT INTO temp (date) VALUES ({12/30/1699}) INSERT INTO temp (date) VALUES ({12/30/0801}) SCAN ALL ?DATE(IIF(YEAR(date)-INT(YEAR(date)/100)*100>50, YEAR(date)-INT(YEAR(date)/100)*100+1900,YEAR(date)-INT(YEAR(date)/100)*100+2000), MONTH(date), DAY(date)) ENDSCAN Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2008, 12:48 |
|
Нормализация некорректно введенных в dbf дат
|
|||
---|---|---|---|
#18+
Sa, Что-нибудь типа Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2008, 13:00 |
|
Нормализация некорректно введенных в dbf дат
|
|||
---|---|---|---|
#18+
> REPLACE ALL MyTest WITH DATE(lnBaseCent + lnDivYear + > (ABS(YEAR(MyDate)%100) + (100 - lnDivYear))%100, MONTH(MyDate), > DAY(MyDate)) > Эко меня ;) Главное, чтобы 29 февраля не нагадило нам. Да, уж. Завернул. PS У меня можно проще. про % из головы вылетело :) PPS У нас обоих выкинет ошибку на пустой дате, так как DATE(0,0,0) генерит ошибку. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2008, 13:11 |
|
Нормализация некорректно введенных в dbf дат
|
|||
---|---|---|---|
#18+
Galyamov Rinat > REPLACE ALL MyTest WITH DATE(lnBaseCent + lnDivYear + > (ABS(YEAR(MyDate)%100) + (100 - lnDivYear))%100, MONTH(MyDate), > DAY(MyDate)) > Эко меня ;) Главное, чтобы 29 февраля не нагадило нам. Да, уж. Завернул. PS У меня можно проще. про % из головы вылетело :) PPS У нас обоих выкинет ошибку на пустой дате, так как DATE(0,0,0) генерит ошибку. Там FOR можно воткнуть и в SCAN и в REPLACE. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2008, 14:09 |
|
Нормализация некорректно введенных в dbf дат
|
|||
---|---|---|---|
#18+
Там ABS совсем лишний, кстати. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2008, 14:19 |
|
Нормализация некорректно введенных в dbf дат
|
|||
---|---|---|---|
#18+
Большое спасибо Galyamov Rinat и Kruchinin Pahan Остановился на таком варианте: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2008, 21:27 |
|
Нормализация некорректно введенных в dbf дат
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2008, 21:40 |
|
Нормализация некорректно введенных в dbf дат
|
|||
---|---|---|---|
#18+
qqqqqqqqqqq, Уел ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2008, 06:06 |
|
Нормализация некорректно введенных в dbf дат
|
|||
---|---|---|---|
#18+
> Автор: Kruchinin Pahan > qqqqqqqqqqq, > > Уел ;) Ну что сказать. Извращенец!!!! :) Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2008, 07:45 |
|
|
start [/forum/topic.php?fid=41&fpage=140&tid=1586977]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
others: | 318ms |
total: | 450ms |
0 / 0 |