将数字值转换为日期时间

11

我正在使用 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)

但是出现了以下错误:

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

我做错了什么?

5个回答

16

您的日期实际上是存储在字符列中的数值(浮点或整数)。因此,您需要先将其转换为数值(在这种情况下,转换为 float ),例如:

select convert(datetime, CONVERT(float,date_column))

数值 41547.5 的结果为:

`2013-10-02 12:00:00`

在您的情况下,6参数只在转换字符类型时才需要。在此情况下,它不是必需的且将被忽略。


注:浮点数的值是自1900-01-01以来的天数。

例如:select convert(datetime, CONVERT(float,9.0)) => 1900-01-10 00:00:00;与select dateadd(day,9.0,'1900-01-01')相同。

数字的小数部分也表示天数;因此,0.5表示半天/12小时。

例如:select convert(datetime, CONVERT(float,.5)) => 1900-01-01 12:00:00。(这里与dateadd的比较没有意义,因为dateadd仅处理整数而不是浮点数。)


谢谢。不过我将日期列转换为整数而不是浮点数。我认为这将给出与您相同的值。 - Sadat Mainuddin

1
我刚找到了这样做的方法。
首先,我必须将nvarchar转换为int,然后将其转换为日期时间。我使用了以下代码:
Select convert(datetime, (convert (int, [date_column])), 6) as 'convertedDateTime' from mytable

1

还有一种更简单的方法。

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

0
SELECT CONVERT(DATETIME,CONVERT(INT,date_column))

0

格式6是:"dd mon yy" 例如:SELECT convert(datetime, '23 OCT 16', 6) 其他格式会导致错误


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接