将日期格式从 DatePicker 插入到 SQL 服务器(日期时间)

Insert Format of Date from DatePicker to SQL Server (datetime)

在我的 Android 应用程序中,我想将日期从 DatePicker 插入到 SQL 服务器数据库。 SQL 服务器中的日期类型是日期时间。 我可以像这样从 DatePicker 获取日、月和年:

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

但是我应该如何将它传递给 SQL Server 2012? 使用哪种格式?

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

这取决于您要存储的数据库。如果您在本地存储在您的 sqlite 数据库中,我建议以毫秒为单位存储日期,如果您存储在后端服务器中,您可以将其转换为 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())

您可以在 SQL 服务器上使用 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)

这里的文档中有更详细的描述: https://msdn.microsoft.com/en-us/library/ms187928.aspx