Sql 将数值转换为日期时间
我在SQL Server 2012中工作。数据集中的“我的日期”列如下所示: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
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。我想这会给你同样的价值。