2013-08-30 117 views
0

内的两个更多钞票的日期格式我有一个尝试当@FechaRecepcion与预期格式Aug 30, 2013 20:10:44改建工程到达转换如何编写处理存储过程

SET @FRecepcion = CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),107 
    )+ ' ' + 
     CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),108 
    ) 
IF (@FRecepcion = NULL) 
BEGIN 
    SET @FRecepcion = '' 
END 

一个MS SQL脚本,SQL脚本。

但在其他计算机@FechaRecepcion测试此脚本时到达这样2013-08-30 20:10:44.000和转换失败

我怎么能写能处理这两种情况下SQL逻辑?或者解决这个问题的最好方法是什么?

+2

真的时间是'24:12:00.000'还是'00:12:00.000'?如果'24',那就是问题所在。 – JohnLBevan

+0

返回的错误消息是什么? –

回答

1

在我更新示例日期2013-08-30 24:12:00.0002013-08-30 00:12:00.000您提供的查询工作后,此工作适用于我。我在SQLFiddle上进行了验证。对于DATETIME,24不是有效的小时。它应该可能是00(也可能是日期的一部分增加1)。

你需要找出为什么一些计算机返回24小时而不是有效小时。根据小时部分为何设置的原因,您可能会解析输入字符串,然后根据需要更新日期。

实施例与预期日期格式(2013年8月30日20时10分44秒):

SET @FechaRecepcion = 'Aug 30, 2013 20:10:44' -- setup test data 

SET @FRecepcion = CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),107 
    )+ ' ' + 
     CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),108 
    ) 

实施例与意想不到日期格式(2013年8月30日20时10分:44.000),但使用相同的脚本解析日期值:

SET @FechaRecepcion = '2013-08-30 20:10:44.000' -- setup test data 

SET @FRecepcion = CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),107 
    )+ ' ' + 
     CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),108 
    ) 

编辑:更新例如查询到的EXA匹配这是在原始问题中提供的。

+0

亚当。关于24小时,这是一个错误。这两种格式的代码是否都是单个SCRIPT? –

+0

是的,当我用这两种格式尝试它时,它工作。我更新了我提供的示例,以便它与您的问题中的脚本相匹配。 –

+0

亚当斯,谢谢,但我想了解,如果第二种格式的“hd:yyyy”格式为107,而第二种格式的“hh:mm:ss”不符合该格式,那么这项工作是如何进行的,因为在“yyyy- mm-dd hh:mm:ss.mmm“? –