2015-01-14 3 views
5

는 내가 SQL 쿼리 성능의 이유로 내 C# 코드를 교체하고 있습니다 :어떻게 datetime을 ddMMyy로 선택할 수 있습니까? 두 자리 연도입니까?

CreatedAt.ToString("ddMMyy", System.Globalization.CultureInfo.InvariantCulture) 

140115로 (오늘) 생성 날짜를 반환합니다. C#에서는 간단하지만 T-SQL에서는 어떻게 얻을 수 있습니까? 내가 시도

:

거의 정확하게이지만, 올해는 네 자리 숫자 대신 두 가지가 있습니다
REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 103), '/', '') 

, 그래서 14012015 대신 140115.

+0

내가이 더 나은 수행합니다 확신하지 않고있어 이것을 사용할 수 있습니다 . 데이터 형식 변환은 SQL Server에서도 무료가 아닙니다. –

+0

@AaronBertrand : 최적화의 일부인 날짜 변환이 아니라 개체에 다른 데이터베이스 쿼리로 초기화되는 복잡한 필드가 포함 된 LINQ-To-SQL을 대체합니다. 이제 모든 관련 필드를 포함하는보기를 사용하고 있습니다. 100 줄 (100 개의 개체로드)을 선택하는 데 20 초가 걸렸습니다. 이제는 단 몇 초만 걸립니다. –

+1

좋아, 그게 분명하지 않았다, 효율성 문제가 단순히 C#에서 서식을 적용하는 것 같았다. –

답변

8

당신이 세기 3을 원한다면 당신이 해달라고하면 docs for CONVERT 상태, 103를 사용할 때 :

REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 3), '/', '') 
+0

감사합니다. 숲을 잃어 버렸어. –

+1

매일 새로운 학습. –

3

또한

SELECT REPLACE(CONVERT(CHAR(10), ChargeArrival.CreatedAt, 5), '-', '')