Преобразование даты AD в Date, а затем поиск конкретных дат

Если вы используете поиск Eclipse, вы можете включить опцию «DOTALL», чтобы сделать «.». сопоставить любой символ, включая разделители строк: просто добавьте «(? s)» в начале строки поиска. Пример:

(?s).*<FooBar>
0
задан Sanky 13 July 2018 в 19:19
поделиться

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),'.','/')

So для вашего предложения where ... который не является SARGable ...

where cast(replace(right(left(RESV_CENTER_Date,11),10),'.','/') as date) between  '2017-05-05' and '2017-06-06'
1
ответ дан scsimon 17 August 2018 в 12:12
поделиться
  • 1
    Как найти конкретные даты с помощью этой команды для RESV_CENTER_Date между '2017-05-05' и '2017-06-06'? – Sanky 13 July 2018 в 19:25
  • 2
    посмотреть последнее изменение @Sanky – scsimon 13 July 2018 в 19:26
  • 3
    Попался. Но в Declare вы указали фиксированную дату? почему это? – Sanky 13 July 2018 в 19:32
  • 4
    он должен был показать рабочий код с образцами данных ... в последней строке я использовал ваше фактическое имя столбца, чтобы вы могли копировать и вставлять. – scsimon 13 July 2018 в 19:33
  • 5
    вы гений сэр. Большое спасибо! – Sanky 13 July 2018 в 19:38
Другие вопросы по тегам:

Похожие вопросы: