我不能为我的生活得到这个工作。我已经尝试了我在这里和遍布互联网上看到的每一个例子。我试图根据一个月的数据进行查询。在我查询视图中的数据的格式如下:SQL Server:查询条件 - 需要从日期时间提取日期
2012-03-20 00:00:00.000
使用下列标准这勾起所有的日期(或几乎所有的)。有任何想法吗?
AND cast(convert(varchar(10), lag.postingdate, 112) as datetime) between '2015-01-01' and '2015-01-31'
原始查询:
SELECT
prov.pgrp_id AS PERFORMING_PROV_ID
, prov.pgrp_prov_name AS PERFORMING_PROV_NAME
, lag.chgno AS CHARGE_NUM
, lag/countcharges AS LAGTIME
, lag.chgamt
, lag.postingdate
FROM
dbo.Providers prov
RIGHT JOIN
dbo.LagTime_Charges_Calcs lag ON prov.pgrp_prov_cd = lag.provcode
AND prov.pgrp_practice = lag.px
LEFT JOIN
dbo.PlaceofService_union_v pos ON lag.px = pos.px
AND lag.poscode = pos.poscode
WHERE
pos.posid = '1'
OR pos.posid = '2'
AND prov.Laginclude = 'y'
AND MONTH(lag.postingdate) = 1
AND YEAR(lag.postingdate) = 2015
--and lag.postingdate between '2015-01-01 00:00:00.000' and '2015-01-31 23:59:59.000'
--AND cast(convert(varchar(10),lag.postingdate,112) as datetime) between '2015- 01-01' and '2015-01-31'
你为什么要转换为字符串?试试'WHERE lag.postingdate> ='20150101'AND lag.postingdate <'20150201';'。请阅读[本文](http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/16/bad-habits-to-kick-mishandling-date-range-queries.aspx)和[本文] (http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what-do-between-and-the-devil-have-in-common.aspx)。 – 2015-02-10 20:51:08
另外,停止谈论“格式” - 什么是实际的*数据类型*?该视图是否呈现该输出,因为它出于某种原因将日期/时间值格式化为字符串?如果是这样,停止这样做... – 2015-02-10 20:58:01
上面的例子不适合我。此列的数据类型是(datetime,null) – gfuller40 2015-02-10 21:02:25