首页 > 解决方案 > SQL如何将MM-DD-YYYY字符串值转换为日期

问题描述

我有一个字符串格式的日期时间变量,格式如下:

01-04-2020 11:50:44:569
01-03-2020 12:50:44:589
01-03-2020 01:50:44:579

如何提取日期部分并选择日期范围?

我尝试使用:

cast(substring(value,1,10) as date) as date1
date1 between '2020-01-01' and '2020-01-05'

但它返回 0 条记录。

但是,此代码适用于以下格式的日期时间字符串值:

2020-01-03T11:50:24:529Z

它将提取日期部分并将其存储为时间戳并提取范围内的记录,但不适用于第一个示例。

我只是想找到一种将字符串值转换为日期值的方法,我无意混淆任何人。至于样本数据集,我认为有 3 条记录的问题的第一部分应该足以进行测试,因为同一变量下的所有值都采用相同的格式。

标签: sqldatedatetimehive

解决方案


看起来该字段只是日期时间格式,我相信简单地转换为日期可能会在这里解决问题:

cast(value as date) between '2020-01-01' and '2020-01-05'

我测试了一个示例字符串,它似乎工作:

DECLARE @date char(25)
SET @date = '01-04-2020 11:50:44:569'

select cast(@date as date)

推荐阅读