#reporting-services #ssrs-tablix
#службы отчетов #ssrs-tablix
Вопрос:
Я пытаюсь получить только часть AM / PM из столбца DateTime в SSRS. Я пробовал оба =Right(Fields!Start_Time.Value,2)
и =Format(Fields!Start_Time.Value,"tt")
, и оба дают мне A3s и P3s. Я также пробовал =IIF(DatePart("hour",Fields!Start_Time.Value) < 12, "AM", "PM")
, который просто отображал исходное DateTime, неформатированное. Что является причиной этого и как мне просто получить часть AM / PM?
Ответ №1:
Вы уверены, что ваше поле является ДАТОЙ / ВРЕМЕНЕМ, или оно просто выглядит как поле даты / времени?
Единственное, о чем я могу думать, это о том, что ваше поле на самом деле не является типом даты / времени, а просто выглядит как одно.
Попробуйте использовать CDATE для преобразования поля Времени начала в дату / время, которое можно отформатировать.
=Format(CDATE(Fields!Start_Time.Value),"tt")
Обновить:
После просмотра ваших комментариев, я думаю, вы помещаете формулу в свойство FORMAT, а не в выражение. Исходя из того, как был написан вопрос, я предположил, что вы заполняете выражение текстового поля данными, отформатированными с помощью функции FORMAT. Если в текстовом поле установлено поле Время начала и вы хотите отформатировать с помощью свойства FORMAT, вы бы просто ввели формат (tt) и не использовали функцию FORMAT.
Комментарии:
1. @sleaf — а как насчет того, когда вы используете NOW?
=FORMAT(CDATE(NOW), "tt")
Вы пробовали использовать как Visual Studio, так и сервер отчетов? Если вы используете свойство FORMAT, а не выражение , просто используйтеtt
.2. Когда я использую NOW, я получаю A3. Я не пробовал в Visual Studio, это для отчета SSRS. Я ничего не знаю об отчетах о данных в Visual Studio.
3. Извините, прочитайте комментарий, прежде чем я прочитаю ваше обновление вопроса. Добавление tt в свойство Format сделало свое дело! Спасибо.
Ответ №2:
Попробуйте: =IIF( Mid(Поля!Start_Time.Значение, 12,2) < 12, «AM», «PM»)
Комментарии:
1. Попробовал, некоторые значения равны A3 / P3, а остальные — исходные неформатированные строки datetime.