Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将“2019-08-07T14:00:00-0400”转换为Java中的SQL日期时间格式?_Java_Datetime_Datetime Parsing - Fatal编程技术网

如何将“2019-08-07T14:00:00-0400”转换为Java中的SQL日期时间格式?

如何将“2019-08-07T14:00:00-0400”转换为Java中的SQL日期时间格式?,java,datetime,datetime-parsing,Java,Datetime,Datetime Parsing,我无法将2019-08-07T14:00:00-0400传递到SQL Server中的存储过程,该存储过程在DATETIME中接受参数 那么,在调用存储过程之前,如何将其转换为Java中的YYYY-MM-DD HH:MM:SS.SSS格式?如果要在SQL查询中转换它,可以使用下面的查询 declare @abc nvarchar(19)='2019-08-07T14:00:00-0400' select CONVERT(DATETIME,convert(varchar, @abc,121))

我无法将2019-08-07T14:00:00-0400传递到SQL Server中的存储过程,该存储过程在DATETIME中接受参数


那么,在调用存储过程之前,如何将其转换为Java中的YYYY-MM-DD HH:MM:SS.SSS格式?

如果要在SQL查询中转换它,可以使用下面的查询

 declare @abc nvarchar(19)='2019-08-07T14:00:00-0400'
 select CONVERT(DATETIME,convert(varchar, @abc,121))
您可以使用SimpleDataFormatClass进行参考访问


您将得到java.util.Date对象,反过来您可以使用它存储在数据库中。

如果您想用java转换它,为什么要标记SQL Server?我无法通过。。。你想做什么?你想传递一个字符串吗?怎么搞的?看到实际的代码将帮助我们理解您的问题。我认为它已经得到了回答。请试试这个。我正在尝试将Java中的字符串2019-08-07T14:00:00-0400传递到存储过程,并将其转换为121样式。我标记sql server是因为我对java解决方案和sql解决方案都持开放态度。不要将日期时间值作为字符串传递。使用并将其作为LocalDateTime实例传递不要使用java.util.Date-至少应该使用java.sql.Timestamp,但java.time.LocalDateTime将是首选解决方案。请不要教年轻人使用过时且臭名昭著的SimpleDateFormat类。至少不是第一个选择。而且不是毫无保留的。今天我们有了更好的in和它的DateTimeFormatter。你能分享你的想法并为指定的格式提出更好的解决方案吗?我想根据@a_horse_的评论写一个答案,使用datetime对象,比如LocalDateTime,而不是字符串;但我对SQL Server及其JDBC驱动程序了解不够,无法确保LocalDateTime是完全正确的Java类型—听起来确实正确。所以我不会。在SQL Server中,永远不要使用没有长度的char、varchar等等!默认值因上下文而异,可能会导致意外和非常难以调试的错误。
SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
Date date = df.parse("2019-08-07T14:00:00-0400");