Sql 将数值转换为日期时间

Sql 将数值转换为日期时间,sql,sql-server,date,sql-server-2012,type-conversion,Sql,Sql Server,Date,Sql Server 2012,Type Conversion,我在SQL Server 2012中工作。数据集中的“我的日期”列如下所示:41547。该列位于nvarchar(255)中。我想将其转换为如下内容:yyyy-mm-dd hh:mm:ss(示例:2013-09-14 12:23:23.98933090)。但我不能这样做。我正在使用以下代码: select convert(datetime, date_column, 6) Select convert(datetime, (convert (int, [date_column])), 6) a

我在SQL Server 2012中工作。数据集中的“我的日期”列如下所示:
41547
。该列位于
nvarchar(255)
中。我想将其转换为如下内容:
yyyy-mm-dd hh:mm:ss
(示例:
2013-09-14 12:23:23.98933090
)。但我不能这样做。我正在使用以下代码:

select convert(datetime, date_column, 6)
Select convert(datetime, (convert (int, [date_column])), 6) as 'convertedDateTime' from mytable
但这会产生以下错误:

Msg 241, Level 16, State 1, Line 1 Conversion failed when converting
date and/or time from character string.

我做错了什么?

您的日期实际上是一个数值(浮点或整数),存储在字符列中。因此,您需要首先将其转换为数值(在本例中,转换为
浮点值
),如:

select convert(datetime, CONVERT(float,date_column))
41547.5
将导致:

`2013-10-02 12:00:00`
仅当从字符类型转换或转换为字符类型时,才需要使用style参数。在这种情况下,它是不需要的,将被忽略


注意:浮动值是自
1900-01-01
以来的天数

e、 g.
选择convert(datetime,convert(float,9.0))
=>
1900-01-10 00:00:00
;与
selectdateadd(day,9.0,'1900-01-01')相同。

数字的小数部分也等于天;所以
0.5
是半天/12小时

e、 g.
选择转换(日期时间,转换(浮点,.5))
=>
1900-01-01 12:00:00
。(这里我们与dateadd的比较没有意义,因为它只处理整数而不是浮点数)。

6格式是:“dd mon yy” 如下所示:选择convert(日期时间,2016年10月23日,6)
其他格式将导致您的错误

我刚刚找到了执行此操作的方法

首先我必须将nvarchar转换为int,然后我必须将它转换为日期时间。我使用了以下代码:

select convert(datetime, date_column, 6)
Select convert(datetime, (convert (int, [date_column])), 6) as 'convertedDateTime' from mytable

还有一种更简单的方法

select convert(date,cast (date_Column+ 19000000 as nvarchar(10)))
    as date_Column_Formated
  from table_Name

谢谢但是,我将日期列转换为int而不是flot。我想这会给你同样的价值。