我想将MySQL查询转换为T-SQL,我需要日期格式功能, 这是我在MySQL中的查询:
SELECT t.id, t.value, t.branch_id, k.name
FROM tb_target as t
LEFT JOIN tb_keyindicator as k ON k.id = t.keyindicator_id
WHERE t.branch_id IN ('241')
AND DATE_FORMAT(t.period,"%Y-%m") = '2017-09'
我收到错误,'DATE_FORMAT' is not a recognized built-in function name
,任何人都可以帮我解决此问题。
答案 0 :(得分:4)
在两个数据库中,最好使用显式日期比较来编写它:
SELECT t.id, t.value, t.branch_id, k.name
FROM tb_target t LEFT JOIN
tb_keyindicator k
ON k.id = t.keyindicator_id
WHERE t.branch_id IN ('241') AND
t.period >= '2017-09-01' AND
t.period < '2017-10-01';
请注意,如果branch_id
是一个数字,那么您应该删除单引号以进行比较。
通过使用直接日期比较,SQL引擎可以利用列上的适当索引。
答案 1 :(得分:1)
如果您愿意,可以将日期转换为yyyy-mm格式,
SELECT t.id, t.value, t.branch_id, k.name
FROM tb_target as t
LEFT JOIN tb_keyindicator as k ON k.id = t.keyindicator_id
WHERE t.branch_id IN ('241')
AND CONVERT(char(7), t.period, 121) = '2017-09'
答案 2 :(得分:0)
如果您想按月过滤:
SELECT t.id,
t.value,
t.branch_id,
k.name
FROM tb_target t LEFT JOIN
tb_keyindicator k ON k.id = t.keyindicator_id
WHERE t.branch_id IN ('241') AND
datepart(month, t.period) = 9
答案 3 :(得分:-1)
SELECT t.id, t.value, t.branch_id, k.name
FROM tb_target as t
LEFT JOIN tb_keyindicator as k ON k.id = t.keyindicator_id
WHERE t.branch_id IN ('241')
AND LEFT(CONVERT(varchar, t.period,112),6) = '2017-09'