Sql Server日期查询不工作
我有一个查询,如下所示。但是,当我运行此查询时,我会得到[date_effective]早于2014年2月14日的行。为什么?我有1980年1月1日的日期出现Sql Server日期查询不工作,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有一个查询,如下所示。但是,当我运行此查询时,我会得到[date_effective]早于2014年2月14日的行。为什么?我有1980年1月1日的日期出现 SELECT * FROM D_CORPACTIONS_MSCI WHERE [date_effective] >= '14 February 2014' AND [ca_status] = 'EXPECTED' OR [ca_status] = 'CONFIRMED' O
SELECT *
FROM D_CORPACTIONS_MSCI
WHERE [date_effective] >= '14 February 2014'
AND [ca_status] = 'EXPECTED'
OR [ca_status] = 'CONFIRMED'
OR [ca_status] = 'UNDETERMINED'
ORDER BY [date_effective]
您的
和
与或
相互冲突
因此,匹配的行不正确
尝试封装或
语句,或者在这种情况下,在中使用:
select *
from d_corpactions_msci
where date_effective >= '14 february 2014'
and ca_status in ('EXPECTED', 'CONFIRMED', 'UNDETERMINED')
order
by date_effective
此外,不要通过转换日期来依赖客户端或服务器上的日期格式:
where date_effective >= convert(datetime, '20140214', 112)
您的和
与或
相互冲突
因此,匹配的行不正确
尝试封装或
语句,或者在这种情况下,在
中使用:
select *
from d_corpactions_msci
where date_effective >= '14 february 2014'
and ca_status in ('EXPECTED', 'CONFIRMED', 'UNDETERMINED')
order
by date_effective
此外,不要通过转换日期来依赖客户端或服务器上的日期格式:
where date_effective >= convert(datetime, '20140214', 112)
帕特里克·霍夫曼和卡西夫——他们已经回答了你的问题
您还可以使用UNION ALL
SELECT *
FROM D_CORPACTIONS_MSCI
WHERE ([date_effective] >= '14 February 2014')
AND [ca_status] = 'EXPECTED'
UNION ALL
SELECT *
FROM D_CORPACTIONS_MSCI
WHERE ([date_effective] >= '14 February 2014')
AND [ca_status] = 'CONFIRMED'
UNION ALL
SELECT *
FROM D_CORPACTIONS_MSCI
WHERE ([date_effective] >= '14 February 2014')
AND [ca_status] = 'UNDETERMINED')
ORDER BY [date_effective]
UNION ALL
的性能优于或
比较–“或”与“联合所有”我的理解如下:
“OR”版本查询有两个运算符(steam聚合和合并联接),而“UNION ALL”版本只有连接运算符
“或”版本查询的基数估计不准确
“UNION ALL”查询的子树成本远低于“OR”版本
帕特里克·霍夫曼和卡西夫——他们已经回答了你的问题
您还可以使用UNION ALL
SELECT *
FROM D_CORPACTIONS_MSCI
WHERE ([date_effective] >= '14 February 2014')
AND [ca_status] = 'EXPECTED'
UNION ALL
SELECT *
FROM D_CORPACTIONS_MSCI
WHERE ([date_effective] >= '14 February 2014')
AND [ca_status] = 'CONFIRMED'
UNION ALL
SELECT *
FROM D_CORPACTIONS_MSCI
WHERE ([date_effective] >= '14 February 2014')
AND [ca_status] = 'UNDETERMINED')
ORDER BY [date_effective]
UNION ALL
的性能优于或
比较–“或”与“联合所有”我的理解如下:
“OR”版本查询有两个运算符(steam聚合和合并联接),而“UNION ALL”版本只有连接运算符
“或”版本查询的基数估计不准确
“UNION ALL”查询的子树成本远低于“OR”版本
基本上,你要问的是-给我的行,那-有date\u effect
>=2014年2月14日,ca\u status
是'EXPECTED'
和行,那-有ca\u status
'confirm'
或'undeminated'
,无论它有什么日期生效,你要问的是-给我的行,那-有date\u effect
>=2014年2月14日,ca\u status
是“预期的”
和行,那-有ca\u status
“确认的”
或“未确定的”
,无论它有什么日期
有效。为什么这么多开销?嗨,帕特里克,我认为UNION ALL的表现优于或比较—“或”与“UNION ALL”,我的理解如下:1。“OR”版本查询有两个运算符(steam聚合和合并联接),而“UNION ALL”版本只有连接运算符。2.“或”版本查询的基数估计不准确。3.“UNION ALL”查询的子树成本远低于“OR”版本。来源:来源:这就是为什么您应该在
中使用。为什么会有这么多开销?嗨,Patrick,我认为UNION ALL的性能优于或比较–“或”与“UNION ALL”我的理解如下:1。“OR”版本查询有两个运算符(steam聚合和合并联接),而“UNION ALL”版本只有连接运算符。2.“或”版本查询的基数估计不准确。3.“UNION ALL”查询的子树成本远低于“OR”版本。来源:来源:这就是为什么您应该在
中使用。