Почему бы просто не использовать cast()
? :
select cast(t.TimeEntityElementId as date)
from dbo.Time t
where cast(t.TimeEntityElementId as date) < '2019-01-01';
N
не подходит для этого, потому что TimeEntityElementId
имеет тип datetime
& amp; N
означает «набор символов национального языка», что означает, что вы передаете данные типа NCHAR
, NVARCHAR
или NTEXT
.
Я недавно записал Приложение, чтобы пройти ряд теста для получения состояния независимого поставщика программного обеспечения из Microsoft, и я также добавляю то условие. Путем я понял, что случалось так, что, если пользователь является Наименьшим количеством Priveledge затем, у него не будет разрешения записать в системных папках. Таким образом, я приблизился к проблеме способ, которым описал Ishmaeel. Я пытаюсь создать файл и поймать исключение, затем сообщают пользователю, что у него нет разрешения записать файлы в тот каталог.
В моем понимании у Наименьшего-количества-Priviledged пользователя не будет необходимых полномочий записать в те папки, если он будет иметь затем, он не Наименьшее-количество-Priveledge пользователя.
Я должен прекратить беспокоиться просто, потому что сам Windows Vista не позволит Наименьшему-количеству-привилегированному-пользователю сохранить какие-либо файлы в %WINDIR %?
По-моему? Да.
Я не напрасно тратил бы время и LOCs при проверке полномочия. Окончательный тест создания файла в Windows является самим созданием. Другие факторы могут сыграть роль (такие как существующие файлы (или хуже, папки) с тем же именем, дисковым пространством, фоновыми процессами. Эти условия могут даже измениться между временем, Вы осуществляете начальную проверку и время, Вы на самом деле пытаетесь создать свой файл.
Так, если бы у меня был сценарий как этот, то я просто разработал бы свой метод, чтобы не потерять любые данные в случае отказа, идти вперед и попытаться создать мой файл и предложить пользователю опцию изменить выбранный каталог и попробовать еще раз, если создание перестало работать.
Я соглашаюсь с другими ответами, что способ сделать это должно попытаться создать файл и поймать исключение.
Однако на Vista остерегаются контроля учётных записей! Посмотрите, например, "Почему мое приложение позволяет мне сохранить файлы к папкам Windows и System32 в Vista?": Для поддержания старых приложений Vista "симулирует" создавать файл, в то время как в действительности это создает его в так называемом Виртуальном Хранилище под профилем текущего пользователя.
Для предотвращения этого, необходимо конкретно сказать Vista, что не хотите административных привилегий включением соответствующих команд в декларации .exe, посмотрите вопрос, связанный выше.
import os
import tempfile
def can_create_file(folder_path):
try:
tempfile.TemporaryFile(dir=folder_path)
return True
except OSError:
return False
def can_create_folder(folder_path):
try:
name = tempfile.mkdtemp(dir=folder_path)
os.rmdir(name)
return True
except OSError:
return False