Java字符串到日期转换为null,写入SQL数据库问题

Java字符串到日期转换为null,写入SQL数据库问题,java,sql,parsing,simpledateformat,Java,Sql,Parsing,Simpledateformat,我有一个日期,该日期已转换为字符串,将传递给Java套接字服务器。该值的一个示例是06:19:18p.m。2011年1月13日 在套接字服务器中,我试图在将其写入SQL数据库表之前将其转换回日期值,但转换后的值为NULL。我还尝试将值作为原始字符串写入SQL数据库,但除非其中没有冒号、句号或正斜杠字符,否则它不会写入 我有什么办法可以绕开这件事吗?很抱歉,我无法查看或发布堆栈跟踪,因为我对运行Jar文件的服务器没有管理员权限 转换字符串的代码是: 我不知道你为什么不能正确解析,但你在这方面的想法

我有一个日期,该日期已转换为字符串,将传递给Java套接字服务器。该值的一个示例是06:19:18p.m。2011年1月13日

在套接字服务器中,我试图在将其写入SQL数据库表之前将其转换回日期值,但转换后的值为NULL。我还尝试将值作为原始字符串写入SQL数据库,但除非其中没有冒号、句号或正斜杠字符,否则它不会写入

我有什么办法可以绕开这件事吗?很抱歉,我无法查看或发布堆栈跟踪,因为我对运行Jar文件的服务器没有管理员权限

转换字符串的代码是:


我不知道你为什么不能正确解析,但你在这方面的想法是错误的。不应将字符串保存在数据库中,而应将列的类型设置为TIMESTAMP或DATE。然后,您可以使用JDBC中的getDate来获取date对象

我不确定您为什么不能正确解析,但您对此的想法完全错误。不应将字符串保存在数据库中,而应将列的类型设置为TIMESTAMP或DATE。然后,您可以使用JDBC中的getDate来获取date对象

这可能只是一个输入错误,但您的示例是06:19:18p.m。2011年12月13日与您的简单日期格式不匹配,因为它希望您的日期中有两个斜杠


找到一种获取堆栈轨迹的方法或在其他地方单独对数据尝试此代码将非常有用,这样您就可以确保您不仅获得了错误的数据。

这可能只是一个输入错误,但您的示例是06:19:18p.m。2011年12月13日与您的简单日期格式不匹配,因为它希望您的日期中有两个斜杠


找到一种获取堆栈轨迹的方法或在其他地方单独对数据尝试此代码将非常有用,这样您就可以确保不只是获取坏数据。

SimpleDataFormat模式中的a只能解析AM或PM,但不是下午。只要更改它,解析就会成功。

SimpleDataFormat模式中的a只能解析AM或PM,但不能解析下午。只要更改它,解析就会成功。

是的,我无意中在那里键入了它,我的代码有两个斜杠。是的,也许使用我自己的计算机作为本地服务器来运行Jar文件可能会有所帮助。是的,我在那里无意中输入了这个,我的代码有两个斜杠。是的,也许使用我自己的计算机作为本地服务器来运行Jar文件可能会有所帮助..我尝试在socket服务器中使用getDate,在SQL中使用列值作为时间戳,但这对我也不起作用,我会再次尝试这种方法,然后发布结果,如果需要的话,JDBC还有一个getTimestamp方法。我尝试的获取日期的所有方法都在本地工作,但在我将JAR上传到服务器上时都没有,这很奇怪,但我无法调试,因为无法访问。但我最终还是让它工作了,没有使用JAVA检索它,在SQL字符串中我使用了GETDATE而不是变量。我想你是这么说的,Amir,cheers.我在socket server中尝试使用getDate,在SQL中尝试将列值作为时间戳,但这对我也不起作用,我会再次尝试这种方法,然后发布结果,cheers.JDBC也有一个getTimestamp方法,如果需要的话。获取日期的所有方法我都在本地尝试过,但当我把JAR上传到服务器上时就不是了,这很奇怪,但由于无法访问,我无法调试。但我最终还是让它工作了,没有使用JAVA检索它,在SQL字符串中我使用了GETDATE而不是变量。我想你就是这么说的,阿米尔,干杯。为什么不按原样传递日期呢?根据你说的,你要做的就是把它转换回日期?为什么不按原样传递日期呢?因为,根据你说的,你要做的就是把它转换回日期?
Date date = null;
SimpleDateFormat sdf = new SimpleDateFormat("hh:mm:ssa dd/MM/yyyy");
try { 
    date = sdf.parse(timestamp);
} 
catch (ParseException e) {
    e.printStackTrace();
}