Я парень из MySQL, работаю над проектом SQL Server и пытаюсь получить поле даты и времени для отображения текущего времени. В MySQL я бы использовал NOW (), но он этого не принимает.
INSERT INTO timelog (datetime_filed) VALUES (NOW())
Я парень из MySQL, работаю над проектом SQL Server и пытаюсь получить поле даты и времени для отображения текущего времени. В MySQL я бы использовал NOW (), но он этого не принимает.
INSERT INTO timelog (datetime_filed) VALUES (NOW())
Ответы:
getdate()
или getutcdate()
.
getdate()
является прямым эквивалентом, но вы всегда должны использовать дату и время UTC
getutcdate()
работает ли ваше приложение в часовых поясах или нет - в противном случае вы рискуете испортить математику даты при переходах весна / осень
SYSDATETIME()
и SYSUTCDATETIME()
являются Datetime2 эквиваленты
которые возвращают DateTime .
DateTime2 теперь является предпочтительным способом хранения даты и времени в SQL Server 2008+. Смотрите следующую статью StackOverflow .
Вы также можете использовать его CURRENT_TIMESTAMP
, если вы хотите быть более совместимым с ANSI (хотя, если вы переносите код между поставщиками баз данных, это будет наименьшим количеством ваших забот). Это точно так же, как GetDate()
под обложками (см. Этот вопрос подробнее).
Однако нет эквивалента ANSI GetUTCDate()
, который, вероятно, следует использовать, если ваше приложение работает в нескольких часовых поясах ...
CURRENT_TIMESTAMP
потому что он работает в MySQL, SQL Server, Oracle ... Как вы сказали, это меньше всего беспокоит нас, но всегда помогает.