将数值转换为日期时间
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
【讨论】:
以上是关于将数值转换为日期时间的主要内容,如果未能解决你的问题,请参考以下文章
请问在excel中如何把数值YYYYMMDD转换为日期YYYY-MM-DD呢?如果直接设置单元格格式为日期,只能显示一连串