Tsql T-SQL将where子句应用于不工作的函数字段
我很难按CreateDate筛选此视图。表中的CreateDate格式如下:2013-10-14 15:53:33.900 我设法将年、月、日分为不同的列,但现在不允许在新创建的列上使用我的Tsql T-SQL将where子句应用于不工作的函数字段,tsql,Tsql,我很难按CreateDate筛选此视图。表中的CreateDate格式如下:2013-10-14 15:53:33.900 我设法将年、月、日分为不同的列,但现在不允许在新创建的列上使用我的WHERE子句。具体来说,两行的错误都是“无效列名CreateYear”。伙计们,我做错了什么?有没有比解析日期、月份和年份更好/更简单的方法?这似乎太过分了。我花了很多时间在这上面,但都没有用 SELECT convert(varchar, DATEPART(month,v.CreateDate)) Cre
WHERE
子句。具体来说,两行的错误都是“无效列名CreateYear”。伙计们,我做错了什么?有没有比解析日期、月份和年份更好/更简单的方法?这似乎太过分了。我花了很多时间在这上面,但都没有用
SELECT convert(varchar, DATEPART(month,v.CreateDate)) CreateMonth,
convert(varchar, DATEPART(DAY,v.CreateDate)) CreateDay,
convert(varchar, DATEPART(YEAR,v.CreateDate)) CreateYear,
v.CreateDate,
v.customerName
From
vw_Name_SQL_DailyPartsUsage v
full outer join
ABC.serviceteamstechnicians t on v.TechnicianNumber = t.AgentNumber
full outer join
ABC.ServiceTeams s on t.STID = s.STID
where
CreateYear >= '02/01/2018'
and
CreateYear <= '02/20/2018'
选择convert(varchar,DATEPART(month,v.CreateDate))CreateMonth,
转换(varchar,DATEPART(DAY,v.CreateDate))CreateDay,
转换(varchar,DATEPART(YEAR,v.CreateDate))CreateYear,
v、 CreateDate,
v、 客户名称
从…起
vw\u名称\u SQL\u日常部件第五页
完全外接
ABC.serviceteamstechnicians t on v.TechniciansNumber=t.AgentNumber
完全外接
ABC.s在t.STID上=s.STID
哪里
CreateYear>=“2018年1月2日”
及
CreateYear您可以使用:
SELECT convert(varchar, DATEPART(month,v.CreateDate)) CreateMonth,
convert(varchar, DATEPART(DAY,v.CreateDate)) CreateDay,
convert(varchar, DATEPART(YEAR,v.CreateDate)) CreateYear,
v.CreateDate,
v.customerName
From vw_Name_SQL_DailyPartsUsage v
full outer join
ABC.serviceteamstechnicians t on v.TechnicianNumber = t.AgentNumber
full outer join
ABC.ServiceTeams s on t.STID = s.STID
where CreateDate BETWEEN '20180102' and '20180220';
有关逻辑查询处理的更多信息是,如果不使用子查询/交叉应用,则不能在WHERE
子句中的SELECT
处引用列别名。不能在WHERE中的SELECT中引用别名
即使你可以,为什么你希望今年是'2018年1月2日'
你为什么要转换成varchar
where year(v.CreateDate) = 2018
或
选择crdate、cast(crdate为日期)、年(crdate)、月(crdate)、日(crdate)
来自sysObjects
铸造位置(crdate as date)='2000-2-10'
按日期订购
你是说YYYYMMDD正确吗?我刚刚尝试过,但它仍然返回相同的错误值PSA:。提示:使用适当的软件(MySQL、Oracle、DB2等)和版本(例如,sql-server-2014
)标记数据库问题很有帮助。语法和特征的差异通常会影响答案。请注意,tsql
缩小了选择范围,但没有指定数据库。
select crdate, cast(crdate as date), year(crdate), month(crdate), day(crdate)
from sysObjects
where cast(crdate as date) <= '2014-2-20'
and cast(crdate as date) >= '2000-2-10'
order by crdate