ГДЕ запрос даты возвращает «Дата ‘xxx’ не распознана» в Snowflake

#snowflake-cloud-data-platform

#snowflake-cloud-data-platform

Вопрос:

Этот запрос:

 select * from weather_effects order by date desc limit 5;
  

Возвращает это:

введите описание изображения здесь

Теперь я хочу выбрать по дате

 select * from weather_effects w where w.date = '2019-12-13';
  

Но я получил эту ошибку:

 100040: Date '2010-10-03 04:32:52, 2011-01-10 08:41:37, 2011-01-13 21:05:23, 2011-01-24 21:16:55, 2011-02-19 04:16:59, 2011-05-01 06:41:41, 2011-05-08 02:15:23, 2011-05-11 05:44:18, 2011-07-17 04:52:19, 2011-11-19 03:46:59, 2011-11-30 04:14:01, 2011-12-23 23:41:42, 2011-12-26 05:23:42, 2012-02-03 07:32:03, 2012-02-03 08:05:14, 2012-04-24 01:08:08, 2012-05-01 01:42:03, 2012-06-03 06:43:34, 2012-07-29 07:52:24, 2012-08-02 02:40:10, 2012-09-01 03:15:01, 2012-12-19 12:43:06, 2012-12-24 22:08:29, 2013-01-01 08:43:20, 2013-01-12 10:19:29, 2013-02-25 06:33:35, 2013-03-20 06:37:46, 2013-03-31 06:44:18, 2013-04-03 11:09:52, 2013-04-20 05:20:52, 2013-04-22 14:47:54, 2013-04-27 03:25:01, 2013-05-04 05:47:48, 2013-05-26 13:15:51, 2013-06-24 03:34:11, 2013-06-27 03:47:52, 2013-06-28 04:04:11, 2013-07-08 03:12:15, 2013-07-10 04:43:07, 2013-07-22 04:38:48, 2013-07-25 19:58:43, 2013-07-29 04:40:02, 2013-08-18 02:37:00, 2013-09-11 07:52:43, 2013-09-23 06:41:21, 2013-09-30 04:39:22, 2013-10-05 07:00:22, 2013-12-24 09:53:12, 2013-12-29 04:23:24, 2013-12-29 06:24:32, 2014-02-07 11:40:35, 2014-02-15 05:57:23' is not recognized
  

введите описание изображения здесь

Пожалуйста, помогите.

Ответ №1:

Я бы предложил либо:

 where w.date::date = '2019-12-13'::date
  

Или:

 where w.date >= '2019-12-13'::date and
      w.date < '2019-12-14'::date
  

Комментарии:

1. 1-е предложение: получена ошибка 100040: Дата ‘2012-03-11 15:10:01, 2012-11-21 18:36:09, 2014-08-08 16:01:40, 2015-06-19 16:39:08, 2015-07-03 06:29:20, 2016-05-18 11:42:09, 2016-11-06 20:02:40, 2018-12-07 03:08:18’ не распознан

2. 2-е предложение: получена ошибка 100040: Дата ‘2010-10-03 04:32:52, 2011-01-10 08:41:37, 2011-01-13 21:05:23, 2011-01-24 21:16:55, 2011-02-19 04:16:59, 2011-05-01 06:41:41, 2011-05-08 02:15:23, 2011-05-11 05:44:18, 2011-07-17 04:52:19, 2011-11-19 03:46:59, 2011-11-30 04:14:01, 2011-12-23 23:41:42, 2011-12-26 05:23:42, 2012-02-03 07:32:03, 2012-02-03 08:05:14, 2012-04-24 01:08:08, 2012-05-01 01:42:03, 2012-06-03 06:43:34, 2012-07-29 07:52:24, 2012-08-02 02:40:10, 2012-09-01 03:15:01, 2012-12-19 12:43:06, 2012-12-24 22:08:29, 2013-01-01 08:43:20, 2013-01-12 10:19:29, … не распознан

Ответ №2:

Можете ли вы проверить тип данных поля «ДАТА» в этой таблице? Похоже, что где-то в вашей таблице есть какая-то длинная строка, которая не только НЕ является датами, но и выглядит как временные метки…и строка из них.

Попробуйте что-то вроде этого:

 select * from weather_effects where TRY_TO_DATE("DATE") = '2019-12-13'::DATE;