В Vim есть функция rename
, но, к сожалению, она не сохраняет историю.
Самый простой способ переименовать файл без потери истории, не зависящий от ОС:
:saveas new_file_name
:call delete(expand('#:p'))
expand('#:p')
возвращает полный путь к старому файлу.
Используйте :bd #
, если вы также хотите удалить более старый файл из списка буферов.
Если вы хотите использовать быструю команду для переименования файла, добавьте новый файл в ~ / .vim / plugin со следующим содержимым:
function! s:rename_file(new_file_path)
execute 'saveas ' . a:new_file_path
call delete(expand('#:p'))
bd #
endfunction
command! -nargs=1 -complete=file Rename call <SID>rename_file(<f-args>)
Команда Rename
поможет вам быстро переименовать файл.
using (SqlConnection conn = new SqlConnection())
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "INSERT INTO <table> (<date_column>) VALUES ('2010-01-01 12:00')";
cmd.ExecuteNonQuery();
}
Прошло некоторое время с тех пор, как я написал этот материал, так что это может быть не идеально. но общая идея есть.
ВНИМАНИЕ: это не было продезинфицировано. Вы должны использовать параметры, чтобы избежать атак путем инъекций.
РЕДАКТИРОВАТЬ: Поскольку Джон настаивает.
INSERT INTO <table> (<date_column>) VALUES ('1/1/2010 12:00')
Я согласен с другими плакатами, что вы должны использовать строку.
Но знайте, что в зависимости от того, насколько агрессивно ваш компилятор оптимизирует временные файлы, у вас, вероятно, возникнут дополнительные накладные расходы (при использовании динамический массив символов). (Примечание: хорошая новость заключается в том, что в C ++ 0a разумное использование ссылок rvalue не потребует оптимизации компилятора для повышения эффективности здесь - и программисты смогут сделать некоторые дополнительные гарантии производительности своего кода, не полагаясь на качество компилятор.)
Стоит ли в вашей ситуации дополнительных накладных расходов вводить ручное управление памятью? Большинство разумных программистов не согласятся, но если у вашего приложения все же возникают проблемы с производительностью, следующим шагом будет профилирование вашего приложения - таким образом, если вы добавите сложность,
[Начало стандартной цитаты]
Временные объекты типа класса создаются в различных контекстах: привязка rvalue к ссылке (8.5.3), возврат rvalue (6.6.3), преобразование, которое создает rvalue (4.1 , 5.2.9, 5.2.11, 5.4), выброс исключения (15.1), вход в обработчик (15.3) и при некоторых инициализациях (8.5). [Примечание: время жизни объектов исключения описано в 15.1. ] Даже когда создание временного объекта избегается (12.8), все семантические ограничения должны соблюдаться, как если бы временный объект был создан. [Пример: даже если конструктор копирования не вызывается, все семантические ограничения, такие как доступность (пункт 11), должны быть выполнены. ]
[Example: struct X { X(int); X(const X&); ˜X(); }; X f(X); void g() { X a(1); X b = f(X(2)); a = f(a); }
Здесь реализация может использовать временный объект для создания X (2) перед передачей его в f () с помощью конструктора копирования X; в качестве альтернативы, X (2) может быть построен в пространстве, используемом для хранения аргумента. Кроме того, временный объект может использоваться для хранения результата f (X (2)) перед его копированием в b с помощью конструктора копирования X; в качестве альтернативы результат f () может быть построен в b. С другой стороны, выражение a = f (a) требует временного значения либо для аргумента a, либо для результата f (a), чтобы избежать нежелательного псевдонима а. ]
[End Standard Quote]
По сути, в приведенном выше тексте говорится, что вы можете полагаться на RVO в ситуациях инициализации, но не в ситуациях присваивания. Причина в том, что когда вы инициализируете объект, нет способа, чтобы то, чем вы его инициализируете, могло когда-либо быть наложено на сам объект (вот почему вы никогда не выполняете самопроверку в конструкторе копирования), но когда вы это делаете
В вашем коде нет ничего, что по своей сути запрещает RVO - но прочтите документацию по компилятору, чтобы убедиться, что вы действительно можете положиться на него, если он вам действительно нужен.
Не нужно беспокоиться о формате даты (ММ / ДД / ГГГГ или ДД / ММ / ГГГГ). Он будет работать со всеми из них.Следующее должно работать и является моей рекомендацией (параметризованный запрос):
DateTime dateTimeVariable = //some DateTime value, e.g. DateTime.Now;
SqlCommand cmd = new SqlCommand("INSERT INTO <table> (<column>) VALUES (@value)", connection);
cmd.Parameters.AddWithValue("@value", dateTimeVariable);
cmd.ExecuteNonQuery();