转换日期时间不是 运行 视图,

convert datetime is not running to view,

我试过这个查询。但它不是 运行。我该怎么办?

SELECT dbo.isemri_data.sipnum, 
       dbo.kayitlar.id, 
       dbo.kayitlar.makina_id, 
       dbo.kayitlar.personel, 
       dbo.kayitlar.isemrino, 
       dbo.kayitlar.tarih, 
       dbo.kayitlar.gercek_hiz, 
       dbo.kayitlar.durus_kod, 
       dbo.kayitlar.miktar, 
       dbo.kayitlar.fire 
FROM   dbo.isemri_data 
       LEFT OUTER JOIN dbo.kayitlar 
                    ON dbo.isemri_data.isemrino = dbo.kayitlar.isemrino 
WHERE  CONVERT(VARCHAR(10), dbo.kayitlar.tarih, 104) BETWEEN 
              CONVERT(VARCHAR(10), '12.08.2015', 104) AND 
              CONVERT(VARCHAR(10), '19.08.2015', 104) 
       AND CONVERT(VARCHAR(3), dbo.kayitlar.makina_id) = 'M1' 
       AND dbo.kayitlar.isemrino LIKE '%' 

如果删除

CONVERT(varchar(10),dbo.KAYITLAR.TARIH,104) BETWEEN convert(varchar(10),'12.08.2015',104) and convert(varchar(10),'19.08.2015',104)

查询是 运行。

or if 运行 only main table allready 运行 my query.

我找不到问题所在。

既然你提到了数据类型是 Datetime ,不要在 where 子句中将它转换为任何其他类型,如果你想的话,在 select 中进行。

SELECT dbo.isemri_data.sipnum, 
       dbo.kayitlar.id, 
       dbo.kayitlar.makina_id, 
       dbo.kayitlar.personel, 
       dbo.kayitlar.isemrino, 
       dbo.kayitlar.tarih, 
       dbo.kayitlar.gercek_hiz, 
       dbo.kayitlar.durus_kod, 
       dbo.kayitlar.miktar, 
       dbo.kayitlar.fire 
FROM   dbo.isemri_data 
       LEFT OUTER JOIN dbo.kayitlar 
                    ON dbo.isemri_data.isemrino = dbo.kayitlar.isemrino 
       AND  dbo.kayitlar.tarih  >= '20150812'  -- use ANSI date YYYYMMDD
       AND  dbo.kayitlar.tarih <=  '20150819'  -- use ANSI date YYYYMMDD
       AND  CONVERT(VARCHAR(3), dbo.kayitlar.makina_id) = 'M1' 
       AND  dbo.kayitlar.isemrino LIKE '%' 

将日期时间转换为字符串意味着 sql 服务器将它们的值视为字符串而不是 date/datetime 值,因此您将得到意想不到的结果此外 sql 服务器将无法如果有的话,使用在该列上定义的任何索引。

保持 date/datetime 值不变,并更改表示层中日期的格式,以便更易于查看 date/datetime 格式。

我找到了答案。如果我使用

dbo.kayitlar.tarih介于 转换(日期时间,'12.08.2015',104)和 转换(日期时间,'19.08.2015',104)

运行查询。

感谢您的帮助