将varchar数据类型转换为日期时间错误。日期格式问题

时间:2019-08-01 09:58:25

标签: sql sql-server datetime

我有一个表,该表的列存储开始日期,开始时间,停止日期和停止时间。我需要编写一个查询以从(开始日期,开始时间)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数据类型会导致超出范围的值。

有什么我想念的吗?

2 个答案:

答案 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)

参考文档 https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

是否需要将start datestart time合并为datetime?您的问题对此不是很清楚

如果这样做,只需连接日期和时间字符串,然后连接convert()

select  convert(datetime, [start date] + ' ' + [start time], 104)
相关问题