어떻게 varchar 열을 datetime 필드로 변환 할 수 있습니까? VARCHAR를 필드는 사전에Varchar에서 Datetime으로 변환 - SQL Server
CAST(t_time AS datetime)
감사를 작동하지 않습니다 아래의 형식 아래
t_time
-------
20140314163955
에서 날짜와 시간을 가지고있다.
어떻게 varchar 열을 datetime 필드로 변환 할 수 있습니까? VARCHAR를 필드는 사전에Varchar에서 Datetime으로 변환 - SQL Server
CAST(t_time AS datetime)
감사를 작동하지 않습니다 아래의 형식 아래
t_time
-------
20140314163955
에서 날짜와 시간을 가지고있다.
하나 개의 옵션, 아래와 같은 함수를 사용하는 것입니다 깨끗하게 유지하기 위해 :
CREATE FUNCTION CONVERT_DATETIME_STRING_TO_DATE (@StringDate NVARCHAR(14))
RETURNS DATETIME
AS
BEGIN
DECLARE @RESULT DATETIME
SELECT @RESULT = CONVERT(datetime, substring(@StringDate, 0, 9))
SELECT @RESULT = DATEADD(HOUR, CAST(SUBSTRING(@StringDate, 9, 2) AS INT), @RESULT)
SELECT @RESULT = DATEADD(MINUTE, CAST(SUBSTRING(@StringDate, 11, 2) AS INT), @RESULT)
SELECT @RESULT = DATEADD(SECOND, CAST(SUBSTRING(@StringDate, 13, 2) AS INT), @RESULT)
RETURN (@RESULT)
END
변환 한 SELECT
문으로 수행 할 수 있지만, 내가 더 나은 것 같아요 시, 분, 초를 추가하는 각 단계를 구분하므로 코드가 명확하고 유지 보수가 쉽습니다.
그런 다음처럼 테이블에서 함수를 호출 :
SELECT CONVERT_DATETIME_STRING_TO_DATE(t_time)
FROM myTable
업데이트 :
: 당신이 액세스 할 수있는 경우하는 경우에만 다음이 같은 것을 사용, SELECT
문을 수행하는
SELECT DATEADD(SECOND, CAST(SUBSTRING(t_time, 13, 2) AS INT), DATEADD(MINUTE, CAST(SUBSTRING(t_time, 11, 2) AS INT), DATEADD(HOUR, CAST(SUBSTRING(t_time, 9, 2) AS INT), CONVERT(DATETIME, substring(t_time, 0, 9)))))
FROM TABLE
사용중인 응용 프로그램이 select를 실행하여 테이블에서 행을 검색합니다. 날짜가 위에서 언급 한 형식이기 때문에. 응용 프로그램은 행을 처리하기 위해 varchar를 타임 스탬프로 변환하는 데 필요한 하나의 라이너가 필요했습니다. –
@PottaPitot 그래서? 필자가 예제를 만든 후에 어떻게 함수를 호출 할 수 있는지에 대한 예에서 보았던 것처럼,이 함수를 일반 SELECT 문에서 사용할 수 있습니다. –
문제는 기능을 만들 수 없다는 것입니다. 내가 처분 할 수있는 것은 기존 테이블에서만 읽을 수있는 선택 액세스 권한이며 이러한 열 중 하나에는 위 형식으로 표시된 타임 스탬프가 포함되어 있습니다. –
시도해보십시오.
DECLARE @s AS VARCHAR(14)
DECLARE @dt AS DATETIME
SET @s = '20140314163955'
SET @dt = CAST(SUBSTRING(@s, 1,8) as datetime)
SELECT DATEADD(Second,
CAST(Substring(@s, 13,2) AS INT) ,
DATEADD(minute,
CAST(Substring(@s, 11,2) AS INT) ,
DATEADD(hour,
CAST(Substring(@s, 9,2) AS INT),
@dt))) AS [DateTime]
사용중인 응용 프로그램이 select를 실행하여 테이블에서 행을 검색합니다. 날짜가 위에서 언급 한 형식이기 때문에. 응용 프로그램은 행을 처리하기 위해 varchar를 타임 스탬프로 변환하는 데 필요한 하나의 라이너가 필요했습니다. –
시간 부분도 필요합니까? – Raj