将Varchar转换为DateTime - Varchar没有用于划分日期部分的字符

时间:2012-11-29 12:04:11

标签: sql sql-server

是否可以将varchar的5122012转换为日期时间05/12/2012?

由于

1 个答案:

答案 0 :(得分:3)

首先,如果没有日期和月份的尾随零,则无法执行此操作。所以你的输入数据必须是:

05122012

其次,最好使用“原生”格式:

20121205 

服务器理解的是什么

如果这是获取数据的唯一方法,则需要一个函数来测试并返回日期

基本功能就像这样(SQL Server 2008示例):

如果输入数据为:05122012,如果您需要不追踪0,则需要将该检查添加到函数

,此函数有效
create function [dbo].[Str2Date] ( @data as varchar(8))
returns datetime
AS
begin
    declare @day char(2), @mon char(2), @year char(4)
    set @day = substring(@data,1,2)
    set @mon = substring(@data,3,2)
    set @year = substring(@data,5,4)
    set @data = @year+@mon+@day
    return convert (datetime,@data,112)
end

select dbo.Str2Date('05122012')