2016-02-28 47 views
0

我在SQL Server中的表像這樣創建:如何將nvarchar列從現有錶轉換爲日期? 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) 

,但我得到一個錯誤。

我會很感激,如果我得到任何幫助

+0

如何從nombres''SELECT CONVERT(日期時間,fecha_nac,100)? –

+0

請提供錯誤和什麼樣的'fecha_nac varchar'看起來像 – jkdba

+0

錯誤可能是你已經在表中的多個數據樣本,但這個功能做一所以它是混淆對數據庫做到這一點,你還是你應該·其爲每列 –

回答

0
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 [email protected]_value), 101) 
     SET @site_value = @site_value + 1; 
    END; 
+0

從表中提取數據,並將其轉換你的日期格式應爲DD/MM/YYYY –

0

你所擁有的日期格式,(mm-yyyy-dd),你可以做一些字符串操作得到它dd-mm-yyyy,然後它可以被解析爲DATEformat 103

WITH cte AS (
    SELECT '11-1994-27' fecha_nac 
) 
SELECT 
    CONVERT(DATE, SUBSTRING(fecha_nac, 9, 2) + '-' + SUBSTRING(fecha_nac, 0, 8), 103) 
FROM cte; 

-- 1994-11-27 

你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 
相關問題