Mysql: конвертировать БД из местного времени в UTC

Comparator, реализованный в классе CompareLastName, может быть помещен вне класса SortNames или, по крайней мере, вне класса CelebrityNamesFile. У меня была такая же проблема, пока я не поместил класс, который реализует мой Компаратор вне моего класса объектов. После того, как я это сделал, программа отлично работала. Вот пример моего кода с комментариями, если он помогает.

// Comparator interface for my Word Class.
public interface Comparator<Word>
{ 
    int compare(Word first, Word second); 
}

// Word Class, which is my object.
public class Word
{
    private String word;
    public Word(String input)  { word = input; }
    public String get()  { return word; }
    public int wordSize()  { return word.length(); }
}

// Comparator implementation is separate from my Word Class.
public class WordComparator implements Comparator<Word>
{
    public int compare(Word first, Word second)
    {
        if (first.wordSize() < second.wordSize())  { return -1; }
        else if (first.wordSize() > second.wordSize())  { return 1; }
        else  { return first.get().compareTo(second.get()); }
    }
}

// Now run the program to ensure the Word Class objects and the WordComparator
// Class are implemented correctly.
public class WordComparatorDemo
{
    public static void main(String[] args) throws FileNotFoundException
    {
        ArrayList<Word> list = new ArrayList<Word>();
        JFileChooser find = new JFileChooser();
        Scanner read = null;
        if(find.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
        {
            File selectedFile = find.getSelectedFile();
            read = new Scanner(selectedFile);
            try
            {
                list = inputData(read);
                // Here's the sort implementing the WordComparator.
                Collections.sort(list, new WordComparator());
            }
            finally  { read.close(); }
        }
    }
    public static ArrayList<Word> inputData(Scanner in)
    {
        ArrayList<Word> list = new ArrayList<Word>();
        in.useDelimiter("[^A-Za-z]+");
        while(in.hasNext())
        {
            String word = in.next();
            Word temp = new Word(word);
            list.add(temp);
        }
        return list;
    }
}

Примечание. Мой ответ через год после оригинального сообщения, но, надеюсь, он поможет любому, кто заходит на этот сайт для получения помощи.

13
задан Joernsn 22 April 2010 в 09:01
поделиться

1 ответ

Сначала вам нужно убедиться, что таблица mysql.time_zone_name заполнена. Если он пуст, вы можете заполнить его, следуя инструкциям на этой странице:

http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html

Обычно это как просто запустить такую ​​команду в оболочке:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql

После заполнения этой таблицы вы можете использовать функцию CONVERT_TZ () для обновления существующих значений в БД:

http://dev.mysql.com/doc /refman/5.1/en/date-and-time-functions.html#function_convert-tz

Вот два примера, показывающих, как он преобразует дату и время из CET в UTC зимой и летом:

mysql> SELECT CONVERT_TZ('2010-01-22 12:00:00','CET','UTC');
+-----------------------------------------------+
| CONVERT_TZ('2010-01-22 12:00:00','CET','UTC') |
+-----------------------------------------------+
| 2010-01-22 11:00:00                           |
+-----------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT CONVERT_TZ('2010-07-22 12:00:00','CET','UTC');
+-----------------------------------------------+
| CONVERT_TZ('2010-07-22 12:00:00','CET','UTC') |
+-----------------------------------------------+
| 2010-07-22 10:00:00                           |
+-----------------------------------------------+
1 row in set (0.00 sec)
27
ответ дан 1 December 2019 в 19:14
поделиться
Другие вопросы по тегам:

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