sql如何将mm dd yyyy字符串值转换为日期

fslejnso  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(360)

我有一个字符串格式的datetime变量,格式如下:

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条记录就足够测试了,因为同一变量下的所有值都是相同的格式。

a64a0gku

a64a0gku1#

我想我知道了:

cast(to_date((FROM_UNIXTIME(UNIX_TIMESTAMP(value, "MM-dd-yyyy HH:mm:ss:SSS"), "yyyy-MM-dd HH:mm:ss.SSS"))) as date) as date1
xmq68pz9

xmq68pz92#

看起来该字段只是datetime格式,我相信简单地将其转换为date可能会达到以下效果:

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)

相关问题