SQL Server中的日期时间转换错误

时间:2018-08-06 14:08:18

标签: sql-server sql-server-2008 sql-server-2005

我的表包含'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)

2 个答案:

答案 0 :(得分:1)

登录名的语言设置控制着如何解释这些模棱两可的日期格式(尽管可以用显式的SET DATEFORMAT语句覆盖)。

可以通过ALTER LOGIN更改DEFAULT_LANGUAGE

尝试使用103

SELECT CONVERT(日期,“ 25/08/2008”,103)

答案 1 :(得分:0)

首先,我建议您更改日期样式而不是立即生效,但稍后您需要这样做,否则您必须为此付费以进行对话(varchar-> date

对于您当前的日期格式,可以使用样式为convert()的{​​{1}}函数

103