将数值转换为日期时间

Posted

技术标签:

【中文标题】将数值转换为日期时间【英文标题】:Converting a numeric value to date time 【发布时间】:2013-10-16 18:02:24 【问题描述】:

我在 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.

我做错了什么?

【问题讨论】:

【参考方案1】:

您的日期实际上是一个数值(浮点数或整数),存储在 char 列中。因此,您需要先将其转换为数值(在本例中为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 的比较没有意义,因为它只处理整数而不是浮点数)。

【讨论】:

谢谢。但是我将日期列转换为 int 而不是 flot。我认为这将提供与您相同的价值。【参考方案2】:

6 格式为:“dd mon yy” 像这样: SELECT convert(datetime, '23 OCT 16', 6) 其他格式会导致你的错误

【讨论】:

【参考方案3】:

我刚刚找到了方法。

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

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

【讨论】:

【参考方案4】:
SELECT CONVERT(DATETIME,CONVERT(INT,date_column))

【讨论】:

【参考方案5】:

还有一种更简单的方法。

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

【讨论】:

以上是关于将数值转换为日期时间的主要内容,如果未能解决你的问题,请参考以下文章

如何将时间戳日期转换为整数值

oracle怎么把数值型日期转换成日期字符型

如何将excel中的三列数值转换成一列日期

使用JS,时间戳数值怎么转换成日期

请问在excel中如何把数值YYYYMMDD转换为日期YYYY-MM-DD呢?如果直接设置单元格格式为日期,只能显示一连串

用matlab将日期格式转换成数值格式