如何解决SQL Server:'<' 和 'day' 附近的语法不正确,需要 '(' 或 SELECT
以下是将查询返回到我的暗网项目的过程。我想获取过去 6 个月、过去 1 周和过去 1 个月的记录。
我会根据查询结果返回'KAYITTARIHI'
version: '3'
services:
redis:
restart: always
image: redis:latest
expose:
- "6379"
appseed-app:
restart: always
env_file: .env
build: .
ports:
- "5006:5006"
networks:
- db_network
- web_network
links:
- redis:redis
depends_on:
- worker
volumes:
# - /path/source/on/host:/path/destination/on/container
- ./media:/media
nginx:
restart: always
image: "nginx:latest"
ports:
- "86:86"
volumes:
- ./nginx:/etc/nginx/conf.d
networks:
- web_network
depends_on:
- appseed-app
# Celery worker
worker:
build: .
command: sh ./run_celery.sh
links:
- redis
networks:
db_network:
driver: bridge
web_network:
driver: bridge
volumes:
media:
但我收到这些错误:
@BasvuruTarihi='Last 1 week' then DATEDIFF(day,KAYITTARIHI,GETDATE())
'day' 附近的语法不正确,当 @BasvuruTarihi='Last 1 month' THEN DATEDIFF(day,GETDATE())
'=' 预期对话 => end = KAYITTARIHI 附近的语法不正确
解决方法
这是一个完全盲目的猜测,但我猜这与您真正想要的差不多。由于领先的通配符,这仍然不会有性能,但是,我至少已经尽可能多地制作了 SARGable。我还添加了 OPTION (RECOMPILE)
以使数据引擎最好有机会使用与查询相关的查询计划。
SELECT ID_CV
FROM dbo.CV
WHERE KULLANICILAR_CV_SILMEDURUMU = 0
AND (ADI LIKE N'%' + @Adi + N'%' OR @Adi IS NULL)
AND (SOYADI LIKE N'%' + @Soyadi + N'%' OR @Soyadi IS NULL)
AND (@BasvuruTarihi = N'Hepsi'
OR (@BasvuruTarihi = N'Last 1 week' AND KAYITTARIHI >= CONVERT(date,DATEADD(DAY,-7,GETDATE())))
OR (@BasvuruTarihi = N'Last 1 week' AND KAYITTARIHI >= CONVERT(date,-30,GETDATE()))) --This isn't a month
OR (@BasvuruTarihi = N'Last 1 week' AND KAYITTARIHI >= CONVERT(date,-180,GETDATE())))) --This isn't 6 months
OPTION (RECOMPILE);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。