从字符串

时间:2017-06-20 11:52:08

标签: tsql sql-server-2012

大家好,这是我的以下查询,我正在尝试将二进制(8)转换为datetime但是我收到以下错误。

  

从字符串转换日期和/或时间时转换失败。

你能帮帮我吗。

DECLARE @VarBinary VarBinary(10)
DECLARE @DateTime DATETIME

SET @VarBinary = CAST(CAST('1998/01/24' AS DATETIME) AS VARBINARY(10))
SET @DateTime = @VarBinary

SELECT TOP 1000 [NodeId],[NodePropertyId],[NodePropertyValue],convert(datetime2, [TStamp]),[Source],[LoadDate]
FROM [Fleet_Staging].[dbo].[rdex_NodePropertyValues]

3 个答案:

答案 0 :(得分:0)

确保[TStamp]正确,如果出现问题,您可能会收到此错误。例如,下面的代码会出现同样的错误。

SELECT CONVERT(datetime2, '2011-09-28 18:01:00 xxx')
  

从字符串转换日期和/或时间时转换失败。

答案 1 :(得分:0)

错误之前 [TStamp]

英语中没有错误

DECLARE @VarBinary VarBinary(10)
DECLARE @DateTime DATETIME
SET LANGUAGE English  
SET @VarBinary = CAST(CAST('1998/01/24' AS DATETIME) AS VARBINARY(10))
SET @DateTime = @VarBinary
SELECT @VarBinary

如果,我改变语言;您在土耳其语中也有同样的错误。

DECLARE @VarBinary VarBinary(10)
DECLARE @DateTime DATETIME
SET LANGUAGE Turkish  
SET @VarBinary = CAST(CAST('1998/01/24' AS DATETIME) AS VARBINARY(10))
SET @DateTime = @VarBinary
SELECT @VarBinary
  

varcharveritüründenbirdatetimeveritürünedönüştürmearalıkdışıbirdeğerlesonuçlandı。

USE转换函数See Microsoft PageW3 Schools Page

DECLARE @VarBinary VarBinary(10)
DECLARE @DateTime DATETIME 
SET LANGUAGE Turkish
SET @VarBinary = CAST(convert(DATETIME, '1998/01/24',111 ) AS VARBINARY(10))
SET LANGUAGE English
SET @VarBinary = CAST(convert(DATETIME, '1998/01/24',111 ) AS VARBINARY(10)) 
SET @DateTime = @VarBinary
SELECT @VarBinary

没有错误

答案 2 :(得分:0)

set dateformat YMD
在SET @Varbinary = CAST之前

(转换....

应该有效! :)