SELECT DATEADD(DD, DATEDIFF(DD, 0, GETDATE()), 0)
SELECT DATEADD(DAY, 0, DATEDIFF(DAY,0, GETDATE()))
SELECT CONVERT(DATETIME, CONVERT(VARCHAR(10), GETDATE(), 101))
Редактирование: первые два метода являются по существу тем же, и выполняют преобразование в varchar метод.
Статический класс означает, что вы не можете использовать его в нестатическом контексте, а это означает, что вы не можете создать экземпляр объекта этого класса и вызвать метод. Если вы хотите использовать свой метод печати, вам нужно будет сделать:
myOtherClass.print("vhhhat?");
Это не статично, поскольку вы создали экземпляр класса с именем moc
:
myOtherClass moc = new myOtherClass();
Это будет означать, что я не могу получить доступ к статическому методу в нестатическом контексте, но Test и main являются статическими, что это означает?
Это относится к тому факту, что вы ссылка на статический метод (myOtherClass.print) с использованием экземпляра (moc). Вам придется переделать это так, чтобы оно было:
myOtherClass.print("vhhhat?");
Это будет правильно компилироваться.
Статические методы - это методы, которые работают с самим классом, а не с конкретным экземпляром класса. Это имеет много применений, например, для реализации шаблона метода фабрики .
Во-первых, ошибка:
moc.print("vhhhat?");
Пытается вызвать статический метод для экземпляра класса (то есть нестатического контекста). Чтобы правильно вызвать print (), вы должны сделать
myOtherClass.print("vhhhat?");
. Что касается первого вопроса, есть много причин для использования статических методов в нестатическом классе. По сути, если есть операция, связанная с классом, но не с каким-либо конкретным экземпляром класса, это должен быть статический метод. Например, String.Format () (или любой из статических методов String) не должен работать с экземплярами строк, но они должны быть связаны с классом String. Следовательно, они статичны.
Иногда «цель» функции специфична для класса, а не для объекта (экземпляра класса).
Например, фабричный метод:
SomeClass obj = SomeClass.CreateInstance();
Это больше очевиден, когда в языке есть средства метапрограммирования, позволяющие выполнять операции с классами. В Python это различие делается более явным по соглашению: первый параметр, переданный функции, называется либо как-то вроде «cls» или «self», и указывает, что функция может работать с классом (когда это «метод класса»). или экземпляр (тип, к которому вы больше привыкли, когда это метод экземпляра).
Вот хороший пример использования статических методов в нестатическом классе:
Обратные вызовы ASP.NET AJAX для веб-методов на страницах ASPX
Когда вы вызываете метод для экземпляра объекта , вы вызываете его в нестатическом контексте. Неважно, каким методом вы это делаете.