将日期格式从 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
在我的 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