시간의 날짜 값과 두 번째 필드가 하나의 열에서 dB 결과에 IIS 로그를 가져 LOGPARSER를 사용하여 결합하는 :TSQL는 날짜 필드와 시간 필드
2010-05-25 00:00:00.000
및
2010-01-01 11:11:58.000
두 필드를 결합하는 after insert
트리거를 코딩하고 싶습니다.
시간의 날짜 값과 두 번째 필드가 하나의 열에서 dB 결과에 IIS 로그를 가져 LOGPARSER를 사용하여 결합하는 :TSQL는 날짜 필드와 시간 필드
2010-05-25 00:00:00.000
및
2010-01-01 11:11:58.000
두 필드를 결합하는 after insert
트리거를 코딩하고 싶습니다.
다른 사람이이 스레드에서 넘어 지거나 (원래의 포스터에서이 대답을 사용할 수있는 경우) LogParser의 TO_TIMESTAMP (날짜, 시간) 함수를 살펴보면 날짜 전용 타임 스탬프와 시간을 결합 할 수 있습니다 유일한 타임 스탬프로 전체 타임 스탬프 값을 ... 그리고 db에서 변환하지 않아도됩니다.
SQL Server 2008 이상을 사용하는 경우 DATE 및 TIME 데이터 유형에 캐스팅 한 후에 두 값을 더할 수 있습니다. 여기에 예제가 있습니다.
declare @datet datetime;
set @datet = GETDATE();
select
@datet,
cast(@datet as date),
cast(@datet as time);
select
cast(cast(@datet as date) as datetime),
cast(cast(@datet as time) as datetime),
cast(cast(@datet as date) as datetime) + cast(cast(@datet as time) as datetime);
이 시도 :
DECLARE @Date varchar(23)
,@Time varchar(23)
,@Both datetime
SELECT @Date='2010-05-25 00:00:00.000'
,@Time='2010-01-01 11:11:58.000'
SELECT @Both=LEFT(@Date,10)+' '+RIGHT(@Time,12)
SELECT @Both
출력 : 기반
-----------------------
2010-05-25 11:11:58.000
(1 row(s) affected)
설정 :
DECLARE @INSERTED table(RowID int, DateOf varchar(23), TimeOf varchar(23), DateTimeOf datetime)
INSERT @INSERTED VALUES (1,'2010-05-25 00:00:00.000','2010-01-01 11:11:58.000',null)
INSERT @INSERTED VALUES (2,'2010-04-05 00:00:00.000','2010-01-01 12:34:56.789',null)
INSERT @INSERTED VALUES (3,'2010-03-15 00:00:00.000','2010-01-01 01:01:01.000',null)
UPDATE @INSERTED
SET DateTimeOf=LEFT(DateOf,10)+' '+RIGHT(TimeOf,12)
SELECT * FROM @INSERTED
출력 :
RowID DateOf TimeOf DateTimeOf
------- ----------------------- ----------------------- -----------------------
1 2010-05-25 00:00:00.000 2010-01-01 11:11:58.000 2010-05-25 11:11:58.000
2 2010-04-05 00:00:00.000 2010-01-01 12:34:56.789 2010-04-05 12:34:56.790
3 2010-03-15 00:00:00.000 2010-01-01 01:01:01.000 2010-03-15 01:01:01.000
(3 row(s) affected)
출력을 새 열에 추가 할 수있는 경우 해당 새 열을 다음과 같이 만들 수도 있습니다. 계산 된 열을 정의하고이를 두 개의 열을 결합하도록 정의합니다 (디자인 타임에).
Dev
데이터 형식의 날짜 및 시간은 문자열에서 위치를 가져 오는 것보다 훨씬 깔끔하게 보입니다. 새로운 08, 당신은 말한다. 그래서 당신은 나를 처음 9 야드있어 - 테이블의 모든 행을 업데이트 할 수 있습니다 - 내가 삽입 된 행을 업데이 트하는 방법 - 최소한 내가 INSX thx – justSteve
대신에 'INSERT BEFORE'를보아야합니다. 수, 트리거를 모두 피하고 계산 된 열 대신 테이블에 다른 열을 그냥 추가하십시오. ALTER TABLE yourtable ADD DateAndTime (cast (@ datat as date) as datetime) + cast (cast (@ datet as time)과 같이 datetime)); –
제 경우에는 정적 인 시간을 보냈고, 시간 부분에서 내부의 캐스트를 피할 수있었습니다. 따라서 datetime + cast ('11 : 59 : 59 PM '은 datetime과 같이) cast (cast (some_date_col as date))는 훌륭하게 작동했으며 좀 더 간결했습니다. – jinglesthula