我尝试了这个查询。但它没有运行。我该怎么办?
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)
查询正在运行。
或者如果只运行到主表,则表示已经运行了我的查询。
我无法找到问题所在。
答案 0 :(得分:1)
由于您已经提到过数据类型是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 server将它们视为字符串而不是日期/日期时间值,因此您将获得意外结果此外,如果存在,则sql server将无法使用该列上定义的任何索引任何。
保持日期/日期时间值不变,并更改表示层中日期的格式,以便更容易看到日期/日期时间格式。
答案 1 :(得分:0)
dbo.kayitlar.tarih BETWEEN CONVERT(DATETIME,&#39; 12.08.2015&#39;,104)AND CONVERT(DATETIME,&#39; 19.08.2015&#39;,104)
运行查询。
thanx求助