使用logparser将IIS日志导入数据库会导致一列具有日期值,另一列具有时间:
2010-05-25 00:00:00.000
和
2010-01-01 11:11:58.000
我想编写一个结合了2个字段的after insert
触发器。
答案 0 :(得分:18)
如果您使用的是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);
答案 1 :(得分:6)
如果其他人偶然发现这个帖子(或者如果原始海报仍然可以使用此答案),请查看LogParser中的TO_TIMESTAMP(日期,时间)功能,该功能允许您将仅限日期的时间戳与时间相结合 - 只有时间戳记成一个完整的时间戳值...并且不必在db ...中转换...
答案 2 :(得分:1)
试试这个:
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)
答案 3 :(得分:0)
如果您可以选择将输出添加到新列中,您还可以将该新列作为计算列,并将其定义为组合这两列(在设计时)。
开发