Запрос MySql, Выбор, больше, чем

Редактировать: CLDR

Запустить подход 2 с параметром командной строки -Djava.locale.providers=CLDR,COMPAT. Например:

java -Djava.locale.providers=CLDR,COMPAT YourApp

Вывод:

zoned fek long en-GB: 17 January 2019
zoned fek long es-ES: 17 de enero de 2019
zoned fek long zh-CN: 2019年1月17日
zoned fek long de-DE: 17. Januar 2019
zoned fek long fr-FR: 17 janvier 2019
zoned fek long it-IT: 17 gennaio 2019
zoned fek long ja-JP: 2019年1月17日
zoned fek long ko-KR: 2019년 1월 17일
blockquote>

Я обнаружил, что на моем Java 9 я не могу воспроизвести вашу проблему. С FormatStyle.LONG я получил 2019年1月17日 для японского языка, где вы сообщили 2019/01/17. Java получает форматы даты как часть своих региональных данных из разных источников. Начиная с Java 8 данные локали из Unicode Common Locale Data Repository (CLDR) поставляются с Java, но по умолчанию используются собственные данные локали Java. Начиная с Java 9, данные CLDR используются по умолчанию. Итак, что я делаю с вышеуказанным параметром командной строки, я говорю вашей Java 8 использовать CLDR раньше, чем собственный Java. Собственные данные локали Java указываются как COMPAT.

Другой вариант, конечно, это обновить до Java 9, 10 или 11. Это также даст вам результат, о котором вы просили.

Java 8 без опции командной строки

Невозможно добавить какую-либо дополнительную опцию в командной строке, так как это приложение будет запускаться в другой системе.

blockquote>

Это прискорбно. Вы можете спросить еще раз. С другой стороны, опция командной строки рискует изменить поведение во всех частях этой другой системы, поэтому вы не сможете пройти через это.

Если ничего не помогает, напишите некоторые исключения для локалей, где FormatStyle.LONG не дает вам того, что требуется. Ответ Joop Eggen показывает один из способов сделать это.

Как только менеджеры этой другой системы решат перейти на Java 9 или новее, если только они не используют опцию командной строки для использования COMAPT до CLDR, данные локали изменятся, и у вас будет возможность упростить код.

12
задан Electronic Zebra 11 December 2008 в 21:14
поделиться

4 ответа

Это кажется слишком простым, но похоже на то, в чем Вы нуждаетесь:

SELECT id,question FROM `questions` 
WHERE `sort_order` > sort_order_variable
ORDER BY sort_order ASC 
LIMIT 1
25
ответ дан 2 December 2019 в 05:04
поделиться
SELECT * FROM table_name WHERE sort_order > 5 ORDER BY sort_order ASC LIMIT 1
3
ответ дан 2 December 2019 в 05:04
поделиться

Можно сделать это с TOP или LIMIT:

SELECT TOP 1 * FROM faq_questions
WHERE sort_order > 5
ORDER BY sort_order ASC

но это не так изящно или портативно как

SELECT *  
FROM faq_questions AS f1  
LEFT JOIN faq_questions AS f2  
    ON f1.sort_order > f2.sort_order  
    AND f2.sort_order = 5  
LEFT JOIN faq_questions AS f3  
    ON f3.sort_order BETWEEN f1.sort_order AND f2.sort_order  
WHERE f3.id IS NULL
2
ответ дан 2 December 2019 в 05:04
поделиться
SELECT 
    id, question, sort_order
FROM faq_questions 
WHERE sort_order in 
(SELECT 
        MIN(sort_order) 
    FROM faq_questions 
    WHERE sort_order > ?);

Это, кажется, работает

0
ответ дан 2 December 2019 в 05:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: