как получить текущую дату и время в SQL? - PullRequest
23 голосов
/ 05 августа 2009

Хотите получить current datetime для вставки в lastModifiedTime столбец. Я использую MySQL базу данных. Мои вопросы:

  1. есть ли функция, доступная в SQL? или

  2. это зависит от реализации, поэтому каждая база данных имеет свою функцию для этого?

  3. Какая функция доступна в MySQL?

Ответы [ 8 ]

44 голосов
/ 05 августа 2009

Полный ответ:

1. Есть ли функция, доступная в SQL?
Да, спецификация SQL 92, октябрь 97, стр. 171, раздел 6.16 определяет эти функции:

CURRENT_TIME       Time of day at moment of evaluation
CURRENT_DATE       Date at moment of evaluation
CURRENT_TIMESTAMP  Date & Time at moment of evaluation

2. Это зависит от реализации, поэтому каждая база данных имеет свою собственную функцию для этого?
Каждая база данных имеет свои собственные реализации, но они должны реализовывать три вышеуказанные функции, если они соответствуют спецификации SQL 92 (но зависит от версии спецификации)

3. Какая функция доступна в MySQL?

NOW() returns 2009-08-05 15:13:00  
CURDATE() returns 2009-08-05  
CURTIME() returns 15:13:00  

(Как говорит SixFootTallRabbit)

11 голосов
/ 05 августа 2009

Я всегда просто использую СЕЙЧАС ():

INSERT INTO table (lastModifiedTime) VALUES (NOW())

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_now

7 голосов
/ 05 августа 2009

СЕЙЧАС () возвращается 2009-08-05 15: 13: 00

CURDATE () возвращает 2009-08-05

CURTIME () возвращает 15: 13: 00

5 голосов
/ 05 августа 2009

Я хочу дату и время сейчас () !

Для MySQL, в любом случае.

3 голосов
/ 09 мая 2017
SYSDATETIME() 2007-04-30 13:10:02.0474381
SYSDATETIMEOFFSET()2007-04-30 13:10:02.0474381 -07:00
SYSUTCDATETIME() 2007-04-30 20:10:02.0474381
CURRENT_TIMESTAMP 2007-04-30 13:10:02.047 +
GETDATE() 2007-04-30 13:10:02.047 
GETUTCDATE() 2007-04-30 20:10:02.047

Я полагаю, что NOW () иногда не работает и выдает ошибку NOW не является распознанным именем встроенной функции.

Надеюсь, это поможет !!! Благодарю вас. https://docs.microsoft.com/en-us/sql/t-sql/functions/getdate-transact-sql

2 голосов
/ 05 августа 2009

Для SQL Server используйте GetDate () или current_timestamp. Вы можете отформатировать результат с помощью Convert (dataType, value, format). Отметьте свой вопрос с правильным сервером базы данных.

0 голосов
/ 22 марта 2019

Просто дополнение для SQLite, которое вы также можете использовать

CURRENT_TIME
CURRENT_DATE
CURRENT_TIMESTAMP

для текущего времени, текущей даты и текущей отметки времени. Вы получите те же результаты, что и для SQL

0 голосов
/ 05 августа 2009
  1. GETDATE () или GETUTCDATE () теперь заменены более насыщенными SYSDATETIME, SYSUTCDATETIME и SYSDATETIMEOFFSET (в SQL 2008)
  2. Да, я не думаю, что ANSI когда-либо что-либо заявлял, и поэтому у каждого производителя есть свои.
  3. Это было бы СЕЙЧАС ()

Надеюсь, это поможет ...

Rob

...