2015-06-17 3 views
1

Вставляю текущую дату в таблицу. У меня есть метод, чтобы получить текущий datet:Вставить дату и получить ее в неправильном формате

private static java.sql.Date getCurrentDate() { 
     java.util.Date today = new java.util.Date(); 
     return new java.sql.Date(today.getTime()); 
    } 

Или в некоторых случаях я получаю дату из из в формате Строка, например, 2016-10-12, а затем я называю этот метод с action.setTodayInfo(session, getCurrentDate()); для вставки в таблицу даты и некоторые булевы переменные

public void setTodayInfo(HttpSession session, Date date) 
      throws SQLException, ClassNotFoundException { 

     System.out.println("Initialize today's info..."); 

     String sq = "INSERT INTO IsSELECTED (date, morning, noon, night) VALUES (?, ?, ?, ?)"; 

    try {  
     Class.forName(typeDB); 
     c = DriverManager.getConnection(path);    
     stm = c.prepareStatement(sq); 

     PreparedStatement stm = c.prepareStatement(sq); 

     stm.setDate(1, date); 
     stm.setBoolean(2, FALSE); 
     stm.setBoolean(3, FALSE); 
     stm.setBoolean(4, FALSE); 

     int rowsAffected = stm.executeUpdate(); 

    } catch (SQLException e) { 
    System.out.println(e.getMessage()); 
    } finally { 
    if (stm != null) { 
     stm.close(); 
    } 
    if (c != null) { 
     c.close(); 
    } 
}   
} 

, когда я смотрю в таблицу поле даты имеет этот 1434473268231 и не текущий день в формате, как 2015/06/16 ..

формат таблицы:

CREATE TABLE "IsSELECTED"(
     "date" DATETIME PRIMARY KEY NOT NULL DEFAULT (CURRENT_DATE) , 
     "morning" BOOL NOT NULL DEFAULT (0) , 
     "noon" BOOL NOT NULL DEFAULT (0) , 
     "night" BOOL NOT NULL DEFAULT (0) 
) 
+0

Используете ли вы MySQL или SQLite? Это разные СУБД. – Jens

+1

Что такое базовая база данных? И как вы «смотрите» в таблице? – Toilal

+0

SQLIte Я использую. Я смотрю прямо в таблице с помощью SQLite Manager – yaylitzis

ответ

1

Не нужно беспокоиться о формате даты его хранения. База данных просто сохранит экземпляр даты, и вы можете использовать один из своих functions, чтобы отформатировать его при поиске.

Вы также можете использовать Java форматировать дату поиска с помощью SimpleDateFormat

0

Divide 1434473268231 от 24 * 60 * 60 * 1000 * 365, и вы получите 45, который является количество лет с начала эпохи 1970.

Это означает, что значение, которое вы видите, - это количество миллисекунд с 1 января 1970 года.

Это должно быть хорошо - обычно значения даты хранятся в памяти как миллисекунды с некоторого согласованного момента времени.

+0

нормально, но я хочу сохранить дату как «yyyy-mm-dd» – yaylitzis

+0

Затем используйте поле строки. – laune

0

В соответствии с этим: https://www.sqlite.org/datatype3.html SQLLite для DATETIME действительно не имеет специального типа.

«Приложения могут выбирать даты и время в любом из этих форматов и свободно конвертировать между форматами, используя встроенные функции даты и времени».

+0

Сначала я сохранил дату как строку. Однако я не могу выполнять поиск между датами в моей базе данных, если я хочу сохранить их как строку. – yaylitzis

+0

У вас есть два варианта. Храните как номер и используйте встроенные функции SQLlite для преобразования и выполнения запросов. Или переключитесь на другую базу данных, которая фактически поддерживает типы данных даты. – ErikHH

+0

Я не думаю, что проблема в SQLite ... Моя основная проблема здесь в том, что я не могу вставить дату как "yyyy-mm-dd" – yaylitzis

Смежные вопросы