2013-07-15 2 views
-7

У меня есть столбец DT_APP который содержит даты в двух форматахИзменение столбца NVARCHAR в формате Date

  1. Sep 4 2012 6:19PM
  2. 2013-04-30 23:38.34

Мне нужно преобразовать 1) в 2) столбец, но мне нужно, чтобы он был в nvarchar(19), поскольку тип данных находится в nvarchar(19).

Я считаю, что это должно быть в формате Datetime, но оно было установлено в nvarchar(19).

Спасибо,

ответ

6

Таким образом, если предположить, что только эти два формата вашей колонки, то вы можете сделать следующее:

SELECT CONVERT(NVARCHAR(19),CONVERT(DATETIME,DT_APP,100),120) 
FROM YourTable 
WHERE DT_APP LIKE '%[aA-zZ]%' 

ОБНОВЛЕНО

Хорошо, если вы хотите другой столбец, то вы можете сначала создать его, а затем заполнить значения:

-- First create a new column 
ALTER TABLE YourTable 
ADD DT_APP2 DATETIME; 

-- Fill that column with DATETIME values 
UPDATE YourTable 
SET DT_APP2 = CASE WHEN DT_APP LIKE '%[aA-zZ]%' 
       THEN CONVERT(DATETIME,DT_APP,100) 
       ELSE CONVERT(DATETIME,DT_APP,120) END 

После этого вы можете проверить столбец, чтобы убедиться, что значения верны, и только после этого вы должны удалить столбец DT_APP.

UPDATE 2 Если вам просто нужно обновить текущие значения, то просто сделать:

UPDATE YourTable 
SET DT_APP = CONVERT(NVARCHAR(19),CONVERT(DATETIME,DT_APP,100),120) 
WHERE DT_APP LIKE '%[aA-zZ]%' 
+0

Спасибо Lamak, но мне нужно, чтобы преобразовать фактический столбец в гггг-мм-дд HH: MM: SS поэтому у меня есть один унифицированный формат столбца вместо двух. Благодарю. – Djbril

+0

@KaisMalique Обновлено мой ответ – Lamak

+0

Мне нужен он в той же колонке. Мне это нужно в Nvarchar (19). Благодарю. – Djbril

Смежные вопросы