Android 插入从日期选择器到SQL Server的日期格式(日期时间)

Android 插入从日期选择器到SQL Server的日期格式(日期时间),android,sql-server,datetime,android-datepicker,Android,Sql Server,Datetime,Android Datepicker,在我的Android应用程序中,我想将日期选择器中的日期插入SQL Server DB。 SQL Server中的日期类型为datetime。 我可以从DatePicker获得日期、月份和年份,如下所示: int day = datePicker.getDayOfMonth(); int month = datePicker.getMonth(); int year = datePicker.getYear();

在我的Android应用程序中,我想将日期选择器中的日期插入SQL Server DB。 SQL Server中的日期类型为datetime。 我可以从DatePicker获得日期、月份和年份,如下所示:

                int day = datePicker.getDayOfMonth();
            int month = datePicker.getMonth();
            int year = datePicker.getYear();
但我应该如何将其传递到SQL Server 2012?
使用哪种格式?

将日期以英里的形式保存到SQL数据库中。

这取决于要存储的数据库。如果您在本地存储在sqlite数据库中,我建议以毫秒为单位存储日期,如果您在后端服务器中存储,则可以将其转换为ISO日期格式。下面给出了两种方法的示例,如果您希望日期采用任何其他格式,也可以通过修改传递给标准\u UI\u date\u 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())
您可以在SQL Server上使用
convert()
函数将字符串(如himanshu1496提供的示例)转换为有效的
datetime
类型

因此,只要可以将字符串值输入数据库,就可以执行以下操作:

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)

此处的文档中对其进行了更详细的描述:

你能用一个例子解释一下吗?ThxIt不是本地数据库,它位于另一台服务器中。我只需要date,所以最好将DB中的字段类型更改为just date,而不是time。你认为使用日历更好吗?如果你在玩日期或时间,或者两者都玩,日历对象是最好的选择。我不确定服务器的日期格式,但如果需要以字符串形式发送,可以使用上面的代码进行格式化。在我的应用程序中,我们使用的是ISO格式,因此我将其转换为ISO并将其作为字符串发送。您使用的SimpleDateFormat对我不起作用,我使用的是:SimpleDateFormat SimpleDateFormat=new SimpleDateFormat(“yyyy-mm-dd hh:mm:ss.mmm”);但是当我编译时,我在catLog:java.lang.NumberFormatException:Invalid int:“18 12:00:00.000”中遇到了这个错误,18是月的第二天,下一天是时间。你能给我看看你用来格式化日期的代码吗,因为我想了解calendar对象是如何实现的吗?calendar finalCalendar=calendar.getInstance();int fDay=datePicker2.getDayOfMonth();int fMonth=datePicker2.getMonth();int fYear=datePicker2.getYear();finalCalendar.set(日历年,整数值)(fYear));finalCalendar.set(日历.月份,整数.值(fMonth));finalCalendar.set(日历.DAY\u/u月,整数.valueOf(fDay));最终日历设置(日历小时,0);最终日历集(日历分钟,0);最终日历集(日历秒,0);