2016-01-18 2 views
1

Мне дан пример кода SQL, и мне нужно понять, что это делает, прежде чем преобразовать его на другой язык.SQL-код Интерпретация «mod» и «CStr»

Может кто-нибудь объяснить мне на английском языке, что этот код делает?

=IIF(Fields!Time.Value\60 < 10, "0" + CStr(Fields!Time.Value\60), CStr(Fields!Time.Value\60)) + ":" + IIF(Fields!Time.Value mod 60 < 10, "0" + FormatNumber(Fields!Time.Value mod 60,0), FormatNumber(Fields!Time.Value mod 60,0))

Много Большое спасибо

+0

Этот код должен быть SQL ??? В любом случае, далеки от ANSI SQL, так что вам лучше пометить продукт dbms, чтобы получить лучшее внимание. – jarlh

+0

Thats, что мне сказали - я исправлю теги, если смогу – user1075081

+0

Итак, из какого контекста вы получили это утверждение? Некоторые средства отчетности, использующие скрипты стиля VB? –

ответ

2

Это занимает время (в секундах), и преобразование его в формат «мм: сс». Для чего это стоит, это больше похоже на VB-скрипт, чем на SQL. В любом случае Cstr просто преобразует в строку, mod дает остаток от деления, например. 16 mod 10 дает 6, 26 mod 10 также даст вам 6.

Первая часть использует Fields!Time.Value/60, чтобы получить время в течение нескольких минут, а затем, когда это число меньше, чем 10, добавив 0 до старта:

| If seconds less than 10 | Append 0 to left of seconds | else just use seconds | 

=IIF(Fields!Time.Value\60 < 10 , "0" + CStr(Fields!Time.Value\60), CStr(Fields!Time.Value\60)) 

Следующая часть в основном делает то же самое с секундами, частью, но использует mod для получения количества секунд, например, 97 секунд необходимо разбить до «01:37», поэтому 97/60 используется для получения 1, то, поскольку это меньше 10, к нему добавляется «0», то для получения секунд используется 97 mod 60, что дает 37, так как это более 10 ничего. .

+0

Спасибо - именно ответ, который мне нужен – user1075081