Я вижу, что некоторые решения были предоставлены, но не какие-либо причины, поэтому я объясню это подробно, поскольку считаю, что важно знать, что вы делаете неправильно, чтобы просто получить «что-то», которое работает с данными ответами.
Во-первых, давайте посмотрим, что должен сказать Oracle
* <p>The returned array will be "safe" in that no references to it are
* maintained by this list. (In other words, this method must
* allocate a new array even if this list is backed by an array).
* The caller is thus free to modify the returned array.
. Это может показаться неважным, но, как вы увидите, это ... Так что же может произойти следующая строка? Все объекты в списке - String, но они не преобразуют их, почему?
List<String> tList = new ArrayList<String>();
tList.add("4");
tList.add("5");
String tArray[] = (String[]) tList.toArray();
Возможно, многие из вас подумают, что этот код делает то же самое, но это не так.
Object tSObjectArray[] = new String[2];
String tStringArray[] = (String[]) tSObjectArray;
Когда на самом деле письменный код делает что-то подобное. Джавадок говорит это! Он установит новый массив, что это будет из объектов !!!
Object tSObjectArray[] = new Object[2];
String tStringArray[] = (String[]) tSObjectArray;
Так tList.toArray создает объекты, а не строки ...
Следовательно, естественное решение, которое не упоминалось в этом потоке, но это то, что Oracle рекомендует, это следующее
String tArray[] = tList.toArray(new String[0]);
Надеюсь, что это достаточно ясно.
It's in Xcode's build options. The drop down on the top left corner that says something like "myapp - 3.0 | Debug" Выберите сборку, которую хотите, и нажмите «Готово».
select Count(Page) as VisitingCount,Page,CONVERT(VARCHAR(8),Date, 108) from scr_SecuristLog
where Date >= '2009-05-04 00:00:00'
AND Date < DATEADD(minute, 1, '2009-05-06 14:58')
and [user] in(select USERNAME
from scr_CustomerAuthorities )
group by Page,Date order by [VisitingCount] asc
Это решение будет эффективно использовать индексы на Дата
SELECT Convert(varchar(5), GetDate(), 108)
Использование varchar (5) автоматически усекает дату, чтобы удалить секунды.
Я не думаю, что есть встроенная функция; обычно делают что-то вроде этого
SET @time = '07:45'
SET @date = CONVERT(DATETIME,@time)
SELECT @date
SELECT LEFT(CONVERT(VARCHAR,@date,108),5)
Для этой конкретной необходимости вы должны использовать метод промежуточного анализа, как отмечено в ответе Кассного . Тем не менее, общую проблему можно решить с помощью:
select dateadd(second, -datepart(second, @date), @date)
КОНВЕРТ (VARCHAR (5), дата, 108)
- Получает только ЧЧ: мм
Одним из способов будет использование функции RIGHT () для обрезки даты. Примерно так:
RIGHT(CONVERT(VARCHAR(8),Date, 108),5)
Это будет работать только в том случае, если количество символов постоянное, например, если это применимо, есть начальный ноль. (К сожалению, здесь нет сервера SQL для тестирования).
Лучший способ - использовать функцию datepart T-SQL для разделения, а затем повторного объединения частей даты так:
DARTPART("hh", CONVERT(VARCHAR(8),Date, 108))+":"+DARTPART("mi", CONVERT(VARCHAR(8),Date, 108))
Ссылки:
http://msdn.microsoft.com/en-us/library /ms174420.aspx
http://msdn.microsoft.com/en-us/library/ms187928.aspx
http://msdn.microsoft.com/en-us/library/ms177532.aspx