我有一个表,该表的列存储开始日期,开始时间,停止日期和停止时间。我需要编写一个查询以从(开始日期,开始时间)AND(停止日期,停止时间)获取记录。
下面是示例数据,
开始日期 varchar(50)-31.7.2019这是2019年7月31日
开始时间 varchar(50)-0:58:33
停止日期 varchar(50)--1.8.2019这是2019年8月1日
停止时间 varchar(50)-4:31:02
在我正在使用的查询中,
where
CAST(CONCAT(StartDate, ' ', StartTime) AS DATETIME) >= CAST(CONCAT(@FromDate, ' ', '00:00:00') AS DATETIME)
以下是我的 @fromdate 格式,即“ 31.7.2019”和我已硬编码为“ 00:00:00”的时间
但是查询抛出以下错误,
将varchar数据类型转换为datetime数据类型会导致超出范围的值。
有什么我想念的吗?
答案 0 :(得分:0)
尝试一下...
declare @myrec nvarchar(max)
set @myrec = '31.7.2019'
select CONVERT(datetime,CONCAT(CONVERT(date, @myrec, 103), ' ', '00:00:00'))
这种变化可能会对您有所帮助。
答案 1 :(得分:0)
使用CONVERT()
和104
样式的日期以字符串格式DD.MM.YYYY
select convert(date, '31.7.2019', 104)
是否需要将start date
和start time
合并为datetime
?您的问题对此不是很清楚
如果这样做,只需连接日期和时间字符串,然后连接convert()
select convert(datetime, [start date] + ' ' + [start time], 104)