将广告日期转换为日期,然后搜索特定日期

时间:2018-07-13 19:19:40

标签: sql sql-server

我的表中RESV_CENTER_Date列有一个特定的日期格式,这很难理解,我需要搜索特定月份的数据。我无法使用Cast-it进行搜索,这给我一个错误提示。我粘贴了记录以了解该日期格式。我想以日期格式将其视为到达或离开的日期。

***conversion failed when converting date and/or time from character string.***

s_id    ARRIVAL_DATE    DEPARTURE_DATE  RESV_CENTER_Date
06385   [2017/06/16]    [2017/11/17]    [2017.11.17 AD at 10:23:08 GMT]

1 个答案:

答案 0 :(得分:1)

日期没有格式...这意味着您将其存储为varchar,这在字符串中的at单词中很明显。

您只需要 date 部分... replace(right(left(RESV_Center_date,11),10),'.','/')

这里正在发挥作用:

declare @RESV_CENTER_Date varchar(64) = '[2017.11.17 AD at 10:23:08 GMT]'
select replace(right(left(@RESV_CENTER_Date,11),10),'.','/')

--or if the brackets aren't there

set @RESV_CENTER_Date = '2017.11.17 AD at 10:23:08 GMT'
select replace(left(@RESV_CENTER_Date,10),'.','/')

因此,对于您的where子句...这是不可维护的...

where cast(replace(right(left(RESV_CENTER_Date,11),10),'.','/') as date) between  '2017-05-05' and '2017-06-06'