Как перевести дату из немецкого формата в английский? - PullRequest
0 голосов
/ 19 сентября 2011

Я создаю приложение, которое запускается на каждом компьютере в моей компании и запрашивает информацию у текущего вошедшего в систему пользователя из Active Directory. К сожалению, мы также используем немецкие и английские операционные системы, и именно поэтому у меня возникла следующая проблема. В английской ОС запрашиваемый формат даты - ГГГГ.ММ.ДД, а в немецкой ОС - ДД.ММ.ГГГГ. Итак, мой вопрос, как я могу преобразовать немецкую дату в английскую дату? Это важно, потому что я вставлю эту дату в базу данных SQL, но на немецком ПК я получаю следующую ошибку: «Преобразование типа данных varchar в тип данных datetime привело к значению вне допустимого диапазона». Я не знаю, уместно ли это или нет, но у меня есть даты в переменной char *.

Спасибо!

Ответы [ 4 ]

1 голос
/ 19 сентября 2011

Я нашел гораздо более простой способ сделать это в SQL.

SELECT convert (datetime, '19 .08.2011 13:17:01 ', 104) Это приведет к следующему: 2011-08-1913: 17: 01.000 Я думаю, что это самый простой способ сделать то, что я хочу.Спасибо за вашу помощь, ребята!

1 голос
/ 19 сентября 2011

Если вы АБСОЛЮТНО уверены, что у вас всегда есть вышеупомянутый немецкий формат, тогда я вижу опцию C, создавая символ * одинаковой длины для английского представления и перетасовывая значения вокруг:

MyEnglishD [0] = MyGermanD [ 6 ];
MyEnglishD [1] = MyGermanD [ 7 ];
MyEnglishD [2] = MyGermanD [ 8 ];
MyEnglishD [3] = MyGermanD [ 9 ];
MyEnglishD [4] = '.';
MyEnglishD [5] = MyGermanD [ 3 ];
MyEnglishD [6] = MyGermanD [ 4 ];
MyEnglishD [7] = '.';
MyEnglishD [8] = MyGermanD [ 0 ];
MyEnglishD [9] = MyGermanD [ 1 ];

Другойя бы предпочел использовать строку формата даты в вашем коде SQL INSERT (пример для Oracle):

INSERT INTO MyTable (MyDateCol,...)
SELECT TO_DATE ( :MyDateVal, :MyDateFormat), :anotherVal... FROM DUAL;

Для английской даты формат должен быть 'YYYY.MM.DD', а длянемецкий 'ДД.ММ.ГГГГ'.

0 голосов
/ 19 сентября 2011

как насчет хранения данных в метке времени? или найдите setLocale в вашем API и установите его, например, ан-нас

0 голосов
/ 19 сентября 2011

Вы должны конвертировать даты varchar в формат даты и времени перед тем, как их записать.

Вы можете обнаружить «немецкий» формат, обнаружив ошибку, а затем построив «YYYY-MM-DD» из «DD-ММ-ГГГГ "в отдельной переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...