SQLite для MS SQL DateTime - PullRequest
       2

SQLite для MS SQL DateTime

2 голосов
/ 07 мая 2019

Я использую SQLite для хранения некоторых дат.

В моей базе данных SQLite есть следующее для создания таблицы

String CREATE_METERREADS_TABLE = "CREATE TABLE " + TABLE_METERREADS + " ("
                + KEY_MYID + " INTEGER,"
                + KEY_MYNUMBER + " FLOAT,"
                + KEY_MYDATE + " TEXT" + ")";
        sqLiteDatabase.execSQL((CREATE_METERREADS_TABLE));

Я создаю дату, используя следующую, и сохраняю ее вкласс с переменной типа String:

    Date date = Calendar.getInstance().getTime();
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String dateRead = dateFormat.format(date);

Затем я отправляю это через SQL Server, используя хранимую процедуру как:

INSERT INTO MyData(ID, MYNumber, MYdate)
    VALUES (@MYID, @MYNUMBER, cast(@MYDATE as datetime))

По какой-то причине день именяется месяц, поэтому при создании моей даты вы можете видеть формат выше, но когда он помещается в SQL-сервер, он отображается как 2019-07-05 08:51:07.000 Это 7 мая, когда я делаю вставку.

Ответы [ 2 ]

4 голосов
/ 07 мая 2019

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

INSERT INTO MyData(ID, MYNumber, MYdate)
    VALUES (@MYID, @MYNUMBER, convert(datetime, @MYDATE, 120)

В вашем случае,формат 120 (ODBC канонический): гггг-мм-дд чч: ми: сс

Здесь у вас есть полный список: https://www.w3schools.com/sql/func_sqlserver_convert.asp

0 голосов
/ 07 мая 2019

Это вызвано проблемами форматирования вашей даты.Пожалуйста, попробуйте заменить

DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

на

 DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...