2015-11-24 2 views
-1

В моем приложении для Android я хочу вставить дату с DatePicker в SQL Server DB. Тип даты в SQL Server - это дата и время. я могу получить день и месяц и год от DatePicker так:Вставить формат даты с DatePicker на SQL Server (datetime)

   int day = datePicker.getDayOfMonth(); 
      int month = datePicker.getMonth(); 
      int year = datePicker.getYear(); 

Но как я должен передать его в SQL Server 2012? С каким форматом?

ответ

1

Это зависит от того, какую базу данных вы хотите сохранить. Если вы храните локально в своей базе данных sqlite, я рекомендую хранить дату в миллисекундах, а если вы храните на сервере backend, вы можете преобразовать ее в формат даты ISO. Примеры обоих способов приведены ниже, и если вам нужна дата в любом другом формате, вы можете это сделать, изменив строку, переданную конструктору объекта STANDARD_UI_DATE_FORMAT.

Calender startTimeCalender = Calendar.getInstance();  
startTimeCalender.set(Calendar.YEAR, year); 
startTimeCalender.set(Calendar.MONTH, monthOfYear); 
startTimeCalender.set(Calendar.DAY_OF_MONTH, dayOfMonth); 

//Date in Millis 
lond dateInMillis = startTimeCalender.getTimeInMillis(); 

SimpleDateFormat STANDARD_UI_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-ddTHH\:mm\:ss.fffffffzzz"); 

//Date in ISO Format 
String formattedDate = STANDARD_UI_DATE_FORMAT.format(startTimeCalender.getTime()) 
+0

Это не локальная БД, ее на другом Сервере. И мне нужна только дата, поэтому лучше изменить тип поля в БД до даты, а не времени. И вы думаете, что лучше использовать Calender? Или я должен? –

+0

Если вы играете с датой или временем или обоими, объект Calender - лучшее, что нужно сделать. И я не совсем уверен, какой формат даты займет ваш сервер, но если вам нужно отправить его как String, вы можете использовать вышеприведенный код для форматирования. В моем приложении мы используем формат ISO, поэтому я конвертирую в ISO и отправляю его как строку. – himanshu1496

+0

SimpleDateFormat, который вы используете, не работал для меня, Я использовал это: SimpleDateFormat simpleDateFormat = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss.mmm"); Но когда я компиляции я получил эту ошибку в catLog: java.lang.NumberFormatException: Invalid INT: "18 12: 00: 00,000" Это 18 является DayOfMonth, а следующее время. –

-1

Сохраните дату в виде миль в базе данных SQL.

+0

Не могли бы вы подробнее объяснить образец? Thx –

0

Вы можете преобразовать строку (как в приведенном примере по himanshu1496) для действительного datetime типа на SQL Server с помощью функции CONVERT().

Так до тех пор, как вы можете получить строковое значение в базе данных вы могли бы сделать что-то вроде этого:

SELECT 
    '2015-11-24 14:17:19' AS UnconvertedText, 
    CAST('2015-11-24T14:17:19' AS datetime) AS UsingCast, 
    CONVERT(datetime, '2015-11-24T14:17:19', 126) AS UsingConvertFrom_ISO8601 ; 
GO 

(Не забудьте, что подлый T в строке в приведенном выше примере)

It более подробно описано в документации: https://msdn.microsoft.com/en-us/library/ms187928.aspx

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