如何将nvarchar列从现有表转换为日期?SQL Server

如何将nvarchar列从现有表转换为日期?SQL Server,sql,sql-server,datetime,format,varchar,Sql,Sql Server,Datetime,Format,Varchar,我在SQL Server中创建了如下表: CREATE TABLE nombres ( nombre varchar (200) not null, fecha_nac char (10) not null, fecha_alta char (10) not null, ) 我创建了一个存储过程来快速填充表。下一步是将日期“格式化”为日期格式。我看到我可以用 SELECT CONVERT(datetime, 'a string', 100) 在这种情况下,我希望

我在SQL Server中创建了如下表:

CREATE TABLE nombres
(
     nombre varchar (200) not null,
     fecha_nac char (10) not null,
     fecha_alta char (10) not null,
)
我创建了一个存储过程来快速填充表。下一步是将日期“格式化”为日期格式。我看到我可以用

SELECT CONVERT(datetime, 'a string', 100)
在这种情况下,我希望像这样使用我的列作为参数

SELECT CONVERT (datetime, select fecha_nac from nombres, 100)
但是我犯了一个错误


如果我得到任何关于您的日期格式的帮助(
mm-yyyy-dd
),我将不胜感激,您可以执行一些字符串操作,将其转换为
dd-mm-yyyy
,然后它可以被解析为
date

您的fecha_alta格式更简单,可以立即使用102格式进行解析

WITH cte AS (
  SELECT '2012-1-12' fecha_alta UNION ALL 
  SELECT '1994-4-5'
)
SELECT 
  CONVERT(DATE, fecha_alta, 102)
FROM cte;

-- 2012-01-12
-- 1994-04-05
声明@site\u值INT;
设置@site_值=1;

当@site\u value从nombres
中选择CONVERT(datetime,fecha\u nac,100)时,
如何?请提供
fecha\u nac varchar
看起来像什么的错误和示例错误可能是表中有多个数据,但此函数执行一个,这样做会使数据库感到困惑,因此,你应该为每一个目标而努力columns@JoachimIsaksson我有一个错误,查询显示“尝试将字符串转换为日期/小时时出错”@JDaniel字符串的格式是什么?你能添加一些样本数据吗?我真诚地怀疑它的格式是
100
,因为它不能容纳10个字符。它从表中获取数据并将其转换为您的日期格式应该是dd/mm/yyyy
WITH cte AS (
  SELECT '2012-1-12' fecha_alta UNION ALL 
  SELECT '1994-4-5'
)
SELECT 
  CONVERT(DATE, fecha_alta, 102)
FROM cte;

-- 2012-01-12
-- 1994-04-05
DECLARE @site_value INT;
SET @site_value = 1;
WHILE @site_value <= (SELECT COUNT(nombre) FROM nombres)
    BEGIN
        WITH MyCte AS 
        (
            SELECT fecha_nac,number= ROW_NUMBER() OVER (ORDER BY dbo.nombres.fecha_nac) 
            from dbo.nombres 
        )
        SELECT convert(datetime,(SELECT MyCte.fecha_nac from MyCte WHERE number=@site_value), 101)
        SET @site_value = @site_value + 1;
    END;