У меня есть столбец с отметкой времени, в котором есть записи типа «2016-11-22 14:35:51» в SPARK SQL. Может ли кто-нибудь помочь мне получить номер недели месяца для данного формата метки времени?

Я пытался,

ВЫБРАТЬ метку времени, DATE_FORMAT (метка времени, 'u') КАК НЕДЕЛЮ ИЗ table_1;

Но он дает неправильный результат, так как,

timestamp  |  WEEK
2016-11-22 |  2

Благодарю, если кто-то может мне помочь.

Спасибо.

1
Praveena Gunasekera 9 Янв 2017 в 15:34

1 ответ

Лучший ответ

Вы используете неправильный литерал, вам нужно использовать W вместо u.

Буква u обозначает номер дня недели .

scala> sqlContext.sql("select current_timestamp() as time, date_format(current_timestamp,'W') as week").show
// +--------------------+----+
// |                time|week|
// +--------------------+----+
// |2017-01-09 13:46:...|   2|
// +--------------------+----+

scala> sqlContext.sql("select to_date('2017-01-01') as time, date_format(to_date('2017-01-01'),'W') as week").show
// +----------+----+
// |      time|week|
// +----------+----+
// |2017-01-01|   1|
// +----------+----+

Если у вас есть дополнительные сомнения, вы всегда можете обратиться к официальная документация SimpleDateFormat на Java.

5
eliasah 1 Фев 2017 в 13:24