Как сделать этот код sql в Java

Кто-нибудь знает, как реализовать этот код SQL в коде Java?

to_char(to_date(time,'sssss'),'hh24:mi')

Формат времени похож на 36000 в базе данных, а затем после этой команды sql: 10:00

Я хочу, чтобы эта функция работала на Java, а не на SQL.


person Vuk Vasić    schedule 27.03.2014    source источник
comment
stackoverflow.com/a/11358115/876739   -  person xrcwrn    schedule 27.03.2014


Ответы (3)


Вы можете использовать SimpleDateFormat#format() для форматирования даты в строку по определенному шаблону.

String newstring = new SimpleDateFormat("yyyy-MM-dd").format(date);
System.out.println(newstring); // 2011-01-18
person Endrik    schedule 27.03.2014
comment
Я знаю об этом. Но проблема в формате SSSSS, который составляет 36000 секунд, которые должны быть отформатированы в 24:00. И у меня нет даты для форматирования, у меня есть только целочисленное значение 36000 - person Vuk Vasić; 27.03.2014
comment
Вы можете создать объект Date из заданного времени в миллисекундах. То есть: Дата Дата = новая Дата (миллис); таким образом у вас будет объект даты, представляющий январь: 01: 1970 и данный час. Используя SimpleDateFormatter, вы можете подобрать только час. Чтобы получить его в 24-часовом формате, вам нужно просто построить средство форматирования, используя kk вместо hh: H Час в сутках (0-23) Число 0 k Час в дне (1-24) Number 24 K Час в am/pm (0-11) Число 0 ч Час в am/pm (1-12) Число 12 - person Endrik; 27.03.2014
comment
Вместо этого я бы рекомендовал использовать FastDateFormat (поскольку это быстрая и поточно-ориентированная версия SimpleDateFormat). - person Chris311; 27.03.2014

Как насчет этого? Не испытано.

public String toHH24MI(int seconds) {
    int hour = seconds/3600;
    int min = (seconds%3600)/60;
    return String.format("%02d:%02d",hour,min);
}
person anonymous    schedule 27.03.2014
comment
Это нормально :) но, например, для минут он возвращает 0 вместо 00. Но это достаточно похоже. Я сделал функцию и разместил ее ниже в качестве ответа. - person Vuk Vasić; 27.03.2014
comment
Я не могу вспомнить доступные форматы, но я думал, что %2d напечатает длину 2. Я уверен, что это можно сделать, а не писать самому. - person anonymous; 27.03.2014
comment
Ok. Забыл символ заполнения. Отредактированный ответ для использования %02d. - person anonymous; 27.03.2014

Кажется, что для этого нет функции Java, поэтому я придумал свою собственную.

public String getTimeFromSeconds(Integer totalSecs) {
        int hoursi = totalSecs / 3600;
        int minutesi = (totalSecs % 3600) / 60;
        String hours="";
        String minutes = "";
        if( (hoursi > 0 || hoursi == 0) && hoursi < 10)
            hours = "0" + hoursi;
        else 
            hours = String.valueOf(hoursi);

        if( (minutesi > 0 || minutesi==0) && minutesi < 10)
            minutes = "0" + minutesi;  
        else
            minutes = String.valueOf(minutesi);
        return hours + ":" + minutes;
    }
person Vuk Vasić    schedule 27.03.2014