如何将varchar转换为SQL Server中的可用日期?
我有一个问题将nvarchar转换为日期。如何将varchar转换为SQL Server中的可用日期?
列标题为'DOS',日期格式为'05-03-2012'。
我想转换为一个日期,所以我可以在where子句中过滤。
我已经看到使用'CONVERT(datetime,DOS,101)'的解释,但我不确定这会去哪里?在选择?在where子句中?这是将varchar转换为日期的最佳方法吗?
select BedSize, avg(contributionmargin) as ContributionMargin from Summary where DOS > '06-30-2016' group by bedsize having avg(contributionmargin) > 10000 order by contributionmargin desc
在这个例子中,where子句只是看在日期的“06”,并选择是比06更大的值,所以结果包括:
- 07/01/2013
- 07/02/2009
- 2009年8月31日
- 2012年9月25日
- 2016年11月3日
- 12/03/2008
的问题是,这些年来被忽略。
选项1:
添加一个新的日期时间列(让我们假设DOSDate)表中,然后运行该查询
update mytable set DOSDate = STR_TO_DATE(DOS,'%m-%d-%Y')
但在mytable的未来刀片还将需要转换并存储在DOSDate`列。
选项2:
如果您不能添加新列,在where
条款
select * from mytable where STR_TO_DATE(DOS,'%m-%d-%Y') > p_mydate
使用这个因为我们还没有提供查询,上面是一个简单的查询,以说明这一点。
更新
最初,您标记了与MySQL相关的问题。对于SQL Server,您可以使用CAST
或CONVERT
而不是STR_To_DATE
https://msdn.microsoft.com/en-us/library/ms187928(v=sql.90).aspx
Per Allen King的建议,我能够查看SQL Server的转换函数。
此代码:
select BedSize, avg(contributionmargin) as ContributionMargin
from Summary
where Convert(Date, DOS, 101) > '06-30-2016'
group by bedsize
having avg(contributionmargin) > 10000
order by contributionmargin desc
发表您的查询,您要使用。 –