为什么在SQL Server 2008中[日期] +([时间]-[偏移量])是不确定的?
技术问答
268 人阅读
|
0 人回复
|
2023-09-12
|
我在试着对我IIS日志表执行以下操作:
9 g. E& D0 |9 v- e2 D' N NALTER TABLE [W3CLog]ADD [LogTime] AS [date] ([time] - '1900-01-01') PERSISTED但是,SQL Server 2008告诉我:3 O: V( b3 A# P- [9 C9 K
表'W3CLog计算列LogTime由于该列不确定,无法保存。该表有以下定义:
7 d% B% v+ V, ~- l) uCREATE TABLE [dbo].[W3CLog]( [Id] [bigint] IDENTITY(1,1) NOT NULL, ... [date] [datetime] NULL, [time] [datetime] NULL, ...)为什么不确定?
, ~2 M. o7 a7 A* X1 k我真的需要索引这个字段。该表目前有1598170行。如果不能全时搜索索引,查询起来会很麻烦。由于这与其他日志格式相统一,我们不能很容易地单独使用这两列。- S" O8 P& s3 Y. }/ k1 S$ t0 w
$ J& |8 M& F0 A9 A
解决方案: # B) `/ G/ @2 B* P+ P
您'1900-01-01不确定,因为它取决于语言设置。当然,这是对的DMY或MDY设置清晰,通常模棱两可
T. A7 N# n! y) n: x: U( U尝试'19000101':SQL Server处理日期和时间有点奇怪:尽管理论上是ISO的,但如果您具有英国设置,则可以将“ yyyy-mm-
6 j4 y( q* {; \/ ^; [3 F: M& @dd”视为“ yyyy-dd-mm”
5 X1 z w& r% ^: X" G/ K编辑:使用此删除日期: DATEADD(day,0,DATEDIFF(day,0,[time]))& O- l7 d- U' X+ g+ |2 _2 w
Edit2:1900年1月1日,日期格式为零,无需减去。你能发布样本数据并输出吗? |
|
|
|
|
|