, Как получить часть ДАТЫ поля DATETIME в SQL Server MS:
Один из самых быстрых и самых опрятных способов сделать это использует
DATEADD(dd, DATEDIFF( dd, 0, @DAY ), 0)
, Он избегает, чтобы слом ЦП "преобразовал дату в строку без времени и затем преобразования его назад снова" логика.
Это также не представляет внутреннюю реализацию, что "часть времени выражается как часть" даты.
Добираются, дата первого дня месяца
DATEADD(dd, DATEDIFF( dd, -1, GetDate() - DAY(GetDate()) ), 0)
Получают дату год rfom 1 назад
DATEADD(m,-12,DATEADD(dd, DATEDIFF( dd, -1, GetDate() - DAY(GetDate()) ), 0))
Просмотрите эту ссылку . Самый простой способ - выполнить блокировку самостоятельно и избежать разделения соединения между потоками. Еще один хороший ресурс можно найти здесь , и он завершается следующим:
Убедитесь, что вы компилируете SQLite с -DTHREADSAFE = 1.
Убедитесь, что каждый поток открывает файл базы данных и сохраняет свои собственная структура sqlite.
Убедитесь, что вы учитываете вероятность столкновения одного или нескольких потоков при одновременном доступе к файлу базы данных: обрабатывайте SQLITE_BUSY соответствующим образом.
Убедитесь, что вы заключили в транзакции команды, которые изменяют базу данных файл, например INSERT, UPDATE, DELETE и другие.
Просто чтобы подчеркнуть, что вы должны быть очень осторожно использовать случайные числа в параллельной настройке. На самом деле вам следует использовать что-то вроде SPRNG
Что бы вы ни делали, убедитесь, что каждый поток не использует одинаковые случайные числа.
COMMIT или ROLLBACK снимет блокировку.Посмотрите этот код в вики SQLite .
Я сделал нечто подобное с C и загрузил код сюда .
Надеюсь, это полезно.