我的表包含'StartDate'列,并且该列中存储的值为'23 .1.2018'格式。
我正在编写一个选择查询,并在其中传递FromDate和ToDate。
@FromDate = '2018-08-01'
@ToDate = '2018-08-05'
执行后,出现错误
从字符串转换日期和/或时间时转换失败
除此之外,我使用了CONVERT(date, StartDate, 104)
之类的CAST和CONVERT等技术……
但是同样的错误仍然存在。
期待解决方案。
select *
from [dbo].[LMT2_ServerLicenseUser]
where cast(cast(startdate as datetime(7)) as date) = cast(cast(@FromDate as datetime(7)) as date)
SELECT CONVERT(date, '2018-08-01')
select convert(varchar, '24.11.2017', 23)
select CONVERT(VARCHAR, CONCAT(CONVERT(date, StartDate, 104), RIGHT('0' + CONVERT(VARCHAR, StartTime), 8)), 103)
答案 0 :(得分:1)
登录名的语言设置控制着如何解释这些模棱两可的日期格式(尽管可以用显式的SET DATEFORMAT语句覆盖)。
可以通过ALTER LOGIN更改DEFAULT_LANGUAGE
尝试使用103
SELECT CONVERT(日期,“ 25/08/2008”,103)
答案 1 :(得分:0)
首先,我建议您更改日期样式而不是立即生效,但稍后您需要这样做,否则您必须为此付费以进行对话(varchar
-> date
)
对于您当前的日期格式,可以使用样式为convert()
的{{1}}函数
103