понедельник, 26 октября 2009 г.

Две цифры номера года в SQLite функции strftime

При импорте данных из внешних источников часто встречается номер года из двух цифр, но встроенной поддержки в функции strftime для этого случая не предусмотрено. Впрочем, несложно и добавить. Патч приведен ниже, а также его можно взять из сырцового деб-пакета моей сборки SQLite.


--- sqlite3-3.6.19.orig/src/date.c
+++ sqlite3-3.6.19/src/date.c
@@ -844,6 +844,7 @@
** %w day of week 0-6 sunday==0
** %W week of year 00-53
** %Y year 0000-9999
+** %y year 00-99
** %% %
*/
static void strftimeFunc(
@@ -883,6 +884,9 @@
case 'Y':
n += 8;
break;
+ case 'y':
+ n += 4;
+ break;
case 's':
case 'J':
n += 50;
@@ -968,6 +972,10 @@
sqlite3_snprintf(5,&z[j],"%04d",x.Y); j+=sqlite3Strlen30(&z[j]);
break;
}
+ case 'y': {
+ sqlite3_snprintf(3,&z[j],"%02d",x.Y % 100); j+=sqlite3Strlen30(&z[j]);
+ break;
+ }
default: z[j++] = '%'; break;
}
}

Комментариев нет:


(C) Alexey Pechnikov aka MBG, mobigroup.ru