Datetime2 (transact-sql)datetime2 (transact-sql)
Содержание:
- Using DATETIME in SQL
- SQL Working with Dates
- Извлечение данных по дате и времени
- SQL Учебник
- АргументыArguments
- SQL References
- DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)
- UPDATE несколько записей
- DATE_FORMAT(date,format)
- SUBDATE(date,INTERVAL expr unit) and SUBDATE(expr,days)
- Функции даты и времени
- Пример
- TIME_FORMAT(time,format)
- SQL Справочник
- Синтаксис
Using DATETIME in SQL
Our New “Users” Table:
| id | username | first | last | last_login | 
|---|---|---|---|---|
| 1 | ohBillNotAgain | Hillary | Clinton | 2011-12-24 12:59:15 | 
| 2 | internetCreator | Al | Gore | 2011-12-24 11:53:25 | 
| 3 | dontMessWithTexas | George | Bush | 2011-12-24 16:24:17 | 
Now, we attempt to get all of our members that logged in before before 1:00PM December 24, 2011.
Example
SELECT * FROM Users WHERE last_login < '2011-12-24 13:00:00'
Result
| id | username | first | last | last_login | 
|---|---|---|---|---|
| 1 | ohBillNotAgain | Hillary | Clinton | 2011-12-24 12:59:15 | 
| 2 | internetCreator | Al | Gore | 2011-12-24 11:53:25 | 
Poor George… Alright, exactly the same syntax as a last one with except we replaced the column name and used a DATETIME string to compare against. The DATETIME data type contains all of the same elements as the DATE data type plus a time string. Commonly referenced as ‘YYYY-MM-DD HH:MM:SS’ Again, in single quotations and with a space separating the date string from the time string, we create our DATE string for comparison. Hillary and Al both make the cut because they logged in before the ‘2011-12-24 13:00:00’ cut off DATETIME. It’s much easier here than it looks in practice. That’s because we put in the DATETIME string by hand. SQL has a few DATE functions you can play around with that you can replace our string with:
Important SQL DATE Functions
Note: SQL DATE functions differ greatly across SQL versions. These are MySQL.
- CURDATE() – gets the current date
- CURTIME() – gets the current time
- NOW() – gets both the date and time (in DATETIME format)
If you are not using MySQL, consider switching. Just kidding, kind of, but no worries, a simple query of Google will help you find the right SQL functions for your SQL database.
SQL Working with Dates
Look at the following table:
Orders Table
| OrderId | ProductName | OrderDate | 
|---|---|---|
| 1 | Geitost | 2008-11-11 | 
| 2 | Camembert Pierrot | 2008-11-09 | 
| 3 | Mozzarella di Giovanni | 2008-11-11 | 
| 4 | Mascarpone Fabioli | 2008-10-29 | 
Now we want to select the records with an OrderDate of «2008-11-11» from the table above.
We use the following statement:
SELECT * FROM Orders WHERE OrderDate=’2008-11-11′
The result-set will look like this:
| OrderId | ProductName | OrderDate | 
|---|---|---|
| 1 | Geitost | 2008-11-11 | 
| 3 | Mozzarella di Giovanni | 2008-11-11 | 
Note: Two dates can easily be compared if there is no time component involved!
Now, assume that the «Orders» table looks like this (notice the
added time-component in the «OrderDate» column):
| OrderId | ProductName | OrderDate | 
|---|---|---|
| 1 | Geitost | 2008-11-11 13:23:44 | 
| 2 | Camembert Pierrot | 2008-11-09 15:45:21 | 
| 3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 | 
| 4 | Mascarpone Fabioli | 2008-10-29 14:56:59 | 
If we use the same statement as above:
SELECT * FROM Orders WHERE OrderDate=’2008-11-11′
we will get no result! This is because the query is looking only for dates with no time portion.
Tip: To keep your queries simple and easy to maintain, do not use time-components in your dates, unless you have to!
  ❮ Previous
  Next ❯
Извлечение данных по дате и времени
В MySQL мы можем отфильтровать извлеченные данные в зависимости от даты и времени. Например, мы можем извлечь только те заказы, доставка которых запланирована на ноябрь:
mysql> SELECT * FROM orders WHERE MONTHNAME(order_delivery) = 'November'; +----------+------------+---------------------+----------------+ | order_no | order_item | order_date | order_delivery | +----------+------------+---------------------+----------------+ | 1 | iPhone 8Gb | 2007-10-23 11:37:55 | 2007-11-06 | +----------+------------+---------------------+----------------+ 1 row in set (0.00 sec)
Точно так же мы можем использовать BETWEEN, чтобы выбрать товары, доставка которых произойдет между двумя указанными датами. Например:
mysql> SELECT * FROM orders WHERE order_delivery BETWEEN '2007-12-01' AND '2008-01-01'; +----------+----------------+---------------------+----------------+ | order_no | order_item | order_date | order_delivery | +----------+----------------+---------------------+----------------+ | 2 | ipod Touch 4Gb | 2007-10-23 11:51:09 | 2007-12-23 | +----------+----------------+---------------------+----------------+ 1 row in set (0.03 sec)
SQL Учебник
SQL ГлавнаяSQL ВведениеSQL СинтаксисSQL SELECTSQL SELECT DISTINCTSQL WHERESQL AND, OR, NOTSQL ORDER BYSQL INSERT INTOSQL Значение NullSQL Инструкция UPDATESQL Инструкция DELETESQL SELECT TOPSQL MIN() и MAX()SQL COUNT(), AVG() и …SQL Оператор LIKESQL ПодстановочныйSQL Оператор INSQL Оператор BETWEENSQL ПсевдонимыSQL JOINSQL JOIN ВнутриSQL JOIN СлеваSQL JOIN СправаSQL JOIN ПолноеSQL JOIN СамSQL Оператор UNIONSQL GROUP BYSQL HAVINGSQL Оператор ExistsSQL Операторы Any, AllSQL SELECT INTOSQL INSERT INTO SELECTSQL Инструкция CASESQL Функции NULLSQL ХранимаяSQL Комментарии
АргументыArguments
format | @ format_varformat | @format_varПорядок следования составляющих частей даты.Is the order of the date parts. Допустимые параметры: mdy, dmy, ymd, ydm, myd и dym.Valid parameters are mdy, dmy, ymd, ydm, myd, and dym. Может быть задано в формате Юникод или в виде двухбайтовой кодировки (DBCS), преобразованной в Юникод.Can be either Unicode or double-byte character sets (DBCS) converted to Unicode. Для языкового стандарта «Английский (США)» значение по умолчанию равно mdy.The U.S. English default is mdy. Значения параметра DATEFORMAT по умолчанию для всех поддерживаемых языков см. в разделе sp_helplanguage (Transact-SQL).For the default DATEFORMAT of all support languages, see sp_helplanguage (Transact-SQL).
SQL References
SQL Keywords
  ADD
  ADD CONSTRAINT
  ALTER
  ALTER COLUMN
  ALTER TABLE
  ALL
  AND
  ANY
  AS
  ASC
  BACKUP DATABASE
  BETWEEN
  CASE
  CHECK
  COLUMN
  CONSTRAINT
  CREATE
  CREATE DATABASE
  CREATE INDEX
  CREATE OR REPLACE VIEW
  CREATE TABLE
  CREATE PROCEDURE
  CREATE UNIQUE INDEX
  CREATE VIEW
  DATABASE
  DEFAULT
  DELETE
  DESC
  DISTINCT
  DROP
  DROP COLUMN
  DROP CONSTRAINT
  DROP DATABASE
  DROP DEFAULT
  DROP INDEX
  DROP TABLE
  DROP VIEW
  EXEC
  EXISTS
  FOREIGN KEY
  FROM
  FULL OUTER JOIN
  GROUP BY
  HAVING
  IN
  INDEX
  INNER JOIN
  INSERT INTO
  INSERT INTO SELECT
  IS NULL
  IS NOT NULL
  JOIN
  LEFT JOIN
  LIKE
  LIMIT
  NOT
  NOT NULL
  OR
  ORDER BY
  OUTER JOIN
  PRIMARY KEY
  PROCEDURE
  RIGHT JOIN
  ROWNUM
  SELECT
  SELECT DISTINCT
  SELECT INTO
  SELECT TOP
  SET
  TABLE
  TOP
  TRUNCATE TABLE
  UNION
  UNION ALL
  UNIQUE
  UPDATE
  VALUES
  VIEW
  WHERE
MySQL Functions
  String Functions
  ASCII
  CHAR_LENGTH
  CHARACTER_LENGTH
  CONCAT
  CONCAT_WS
  FIELD
  FIND_IN_SET
  FORMAT
  INSERT
  INSTR
  LCASE
  LEFT
  LENGTH
  LOCATE
  LOWER
  LPAD
  LTRIM
  MID
  POSITION
  REPEAT
  REPLACE
  REVERSE
  RIGHT
  RPAD
  RTRIM
  SPACE
  STRCMP
  SUBSTR
  SUBSTRING
  SUBSTRING_INDEX
  TRIM
  UCASE
  UPPER
Numeric Functions
  ABS
  ACOS
  ASIN
  ATAN
  ATAN2
  AVG
  CEIL
  CEILING
  COS
  COT
  COUNT
  DEGREES
  DIV
  EXP
  FLOOR
  GREATEST
  LEAST
  LN
  LOG
  LOG10
  LOG2
  MAX
  MIN
  MOD
  PI
  POW
  POWER
  RADIANS
  RAND
  ROUND
  SIGN
  SIN
  SQRT
  SUM
  TAN
  TRUNCATE
Date Functions
  ADDDATE
  ADDTIME
  CURDATE
  CURRENT_DATE
  CURRENT_TIME
  CURRENT_TIMESTAMP
  CURTIME
  DATE
  DATEDIFF
  DATE_ADD
  DATE_FORMAT
  DATE_SUB
  DAY
  DAYNAME
  DAYOFMONTH
  DAYOFWEEK
  DAYOFYEAR
  EXTRACT
  FROM_DAYS
  HOUR
  LAST_DAY
  LOCALTIME
  LOCALTIMESTAMP
  MAKEDATE
  MAKETIME
  MICROSECOND
  MINUTE
  MONTH
  MONTHNAME
  NOW
  PERIOD_ADD
  PERIOD_DIFF
  QUARTER
  SECOND
  SEC_TO_TIME
  STR_TO_DATE
  SUBDATE
  SUBTIME
  SYSDATE
  TIME
  TIME_FORMAT
  TIME_TO_SEC
  TIMEDIFF
  TIMESTAMP
  TO_DAYS
  WEEK
  WEEKDAY
  WEEKOFYEAR
  YEAR
  YEARWEEK
Advanced Functions
  BIN
  BINARY
  CASE
  CAST
  COALESCE
  CONNECTION_ID
  CONV
  CONVERT
  CURRENT_USER
  DATABASE
  IF
  IFNULL
  ISNULL
  LAST_INSERT_ID
  NULLIF
  SESSION_USER
  SYSTEM_USER
  USER
  VERSION
SQL Server Functions
  String Functions
  ASCII
  CHAR
  CHARINDEX
  CONCAT
  Concat with +
  CONCAT_WS
  DATALENGTH
  DIFFERENCE
  FORMAT
  LEFT
  LEN
  LOWER
  LTRIM
  NCHAR
  PATINDEX
  QUOTENAME
  REPLACE
  REPLICATE
  REVERSE
  RIGHT
  RTRIM
  SOUNDEX
  SPACE
  STR
  STUFF
  SUBSTRING
  TRANSLATE
  TRIM
  UNICODE
  UPPER
Numeric Functions
  ABS
  ACOS
  ASIN
  ATAN
  ATN2
  AVG
  CEILING
  COUNT
  COS
  COT
  DEGREES
  EXP
  FLOOR
  LOG
  LOG10
  MAX
  MIN
  PI
  POWER
  RADIANS
  RAND
  ROUND
  SIGN
  SIN
  SQRT
  SQUARE
  SUM
  TAN
Date Functions
  CURRENT_TIMESTAMP
  DATEADD
  DATEDIFF
  DATEFROMPARTS
  DATENAME
  DATEPART
  DAY
  GETDATE
  GETUTCDATE
  ISDATE
  MONTH
  SYSDATETIME
  YEAR
Advanced Functions
  CAST
  COALESCE
  CONVERT
  CURRENT_USER
  IIF
  ISNULL
  ISNUMERIC
  NULLIF
  SESSION_USER
  SESSIONPROPERTY
  SYSTEM_USER
  USER_NAME
MS Access Functions
  String Functions
  Asc
  Chr
  Concat with &
  CurDir
  Format
  InStr
  InstrRev
  LCase
  Left
  Len
  LTrim
  Mid
  Replace
  Right
  RTrim
  Space
  Split
  Str
  StrComp
  StrConv
  StrReverse
  Trim
  UCase
Numeric Functions
  Abs
  Atn
  Avg
  Cos
  Count
  Exp
  Fix
  Format
  Int
  Max
  Min
  Randomize
  Rnd
  Round
  Sgn
  Sqr
  Sum
  Val
Date Functions
  Date
  DateAdd
  DateDiff
  DatePart
  DateSerial
  DateValue
  Day
  Format
  Hour
  Minute
  Month
  MonthName
  Now
  Second
  Time
  TimeSerial
  TimeValue
  Weekday
  WeekdayName
  Year
Other Functions
  CurrentUser
  Environ
  IsDate
  IsNull
  IsNumeric
SQL Quick Ref
DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)
These functions perform date arithmetic. The date is a DATETIME or DATE value specifying the starting date. The expr is an expression specifying the interval value to be added or subtracted from the starting date. The expr is a string; it may start with a ‘-‘ for negative intervals.
A unit is a keyword indicating the units in which the expression should be interpreted.
The INTERVAL keyword and the unit specifier are not case sensitive.
The following table shows the expected form of the expr argument for each unit value.
| unit Value | Expected exprFormat | 
|---|---|
| MICROSECOND | MICROSECONDS | 
| SECOND | SECONDS | 
| MINUTE | MINUTES | 
| HOUR | HOURS | 
| DAY | DAYS | 
| WEEK | WEEKS | 
| MONTH | MONTHS | 
| QUARTER | QUARTERS | 
| YEAR | YEARS | 
| SECOND_MICROSECOND | ‘SECONDS.MICROSECONDS’ | 
| MINUTE_MICROSECOND | ‘MINUTES.MICROSECONDS’ | 
| MINUTE_SECOND | ‘MINUTES:SECONDS’ | 
| HOUR_MICROSECOND | ‘HOURS.MICROSECONDS’ | 
| HOUR_SECOND | ‘HOURS:MINUTES:SECONDS’ | 
| HOUR_MINUTE | ‘HOURS:MINUTES’ | 
| DAY_MICROSECOND | ‘DAYS.MICROSECONDS’ | 
| DAY_SECOND | ‘DAYS HOURS:MINUTES:SECONDS’ | 
| DAY_MINUTE | ‘DAYS HOURS:MINUTES’ | 
| DAY_HOUR | ‘DAYS HOURS’ | 
| YEAR_MONTH | ‘YEARS-MONTHS’ | 
The values QUARTER and WEEK are available from the MySQL 5.0.0. version.
mysql> SELECT DATE_ADD('1997-12-31 23:59:59', 
   -> INTERVAL '1:1' MINUTE_SECOND);
+---------------------------------------------------------+
| DATE_ADD('1997-12-31 23:59:59', INTERVAL...             |
+---------------------------------------------------------+
| 1998-01-01 00:01:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
+---------------------------------------------------------+
| DATE_ADD('1999-01-01', INTERVAL 1 HOUR)                 |
+---------------------------------------------------------+
| 1999-01-01 01:00:00                                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)
UPDATE несколько записей
Именно предложение WHERE определяет, сколько записей будет обновлено.
Следующая инструкция SQL обновит имя контакта до «Juan» для всех записей, где страна — «Mexico»:
Пример
UPDATE Customers
SET ContactName=’Juan’
WHERE Country=’Mexico’;
Выбор из таблицы «Customers» теперь будет выглядеть следующим образом:
| CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country | 
|---|---|---|---|---|---|---|
| 1 | Alfreds Futterkiste | Alfred Schmidt | Obere Str. 57 | Frankfurt | 12209 | Germany | 
| 2 | Ana Trujillo Emparedados y helados | Juan | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico | 
| 3 | Antonio Moreno Taquería | Juan | Mataderos 2312 | México D.F. | 05023 | Mexico | 
| 4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK | 
| 5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden | 
DATE_FORMAT(date,format)
This command formats the date value as per the format string.
The following specifiers may be used in the format string. The ‘%’ character is required before the format specifier characters.
| Sr.No. | Specifier & Description | 
|---|---|
| 1 | %a Abbreviated weekday name (Sun..Sat) | 
| 2 | %b Abbreviated month name (Jan..Dec) | 
| 3 | %c Month, numeric (0..12) | 
| 4 | %D Day of the month with English suffix (0th, 1st, 2nd, 3rd, .) | 
| 5 | %d Day of the month, numeric (00..31) | 
| 6 | %e Day of the month, numeric (0..31) | 
| 7 | %f Microseconds (000000..999999) | 
| 8 | %H Hour (00..23) | 
| 9 | %h Hour (01..12) | 
| 10 | %I Hour (01..12) | 
| 11 | %i Minutes, numeric (00..59) | 
| 12 | %j Day of year (001..366) | 
| 13 | %k Hour (0..23) | 
| 14 | %l Hour (1..12) | 
| 15 | %M Month name (January..December) | 
| 16 | %m Month, numeric (00..12) | 
| 17 | %p AM or PM | 
| 18 | %r Time, 12-hour (hh:mm:ss followed by AM or PM) | 
| 19 | %S Seconds (00..59) | 
| 20 | %s Seconds (00..59) | 
| 21 | %T Time, 24-hour (hh:mm:ss) | 
| 22 | %U Week (00..53), where Sunday is the first day of the week | 
| 23 | %u Week (00..53), where Monday is the first day of the week | 
| 24 | %V Week (01..53), where Sunday is the first day of the week; used with %X | 
| 25 | %v Week (01..53), where Monday is the first day of the week; used with %x | 
| 26 | %W Weekday name (Sunday..Saturday) | 
| 27 | %w Day of the week (0=Sunday..6=Saturday) | 
| 28 | %X Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V | 
| 29 | %x Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v | 
| 30 | %Y Year, numeric, four digits | 
| 31 | %y Year, numeric (two digits) | 
| 32 | %% A literal .%. character | 
| 33 | %x x, for any.x. not listed above | 
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y')          |
+---------------------------------------------------------+
| Saturday October 1997                                   |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00'
   -> '%H %k %I %r %T %S %w');
+---------------------------------------------------------+
| DATE_FORMAT('1997-10-04 22:23:00.......                 |
+---------------------------------------------------------+
|  22 22 10 10:23:00 PM 22:23:00 00 6                     |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SUBDATE(date,INTERVAL expr unit) and SUBDATE(expr,days)
When invoked with the INTERVAL form of the second argument, SUBDATE() is a synonym for DATE_SUB(). For information on the INTERVAL unit argument, see the discussion for DATE_ADD().
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| DATE_SUB('1998-01-02', INTERVAL 31 DAY)                 |
+---------------------------------------------------------+
| 1997-12-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);
+---------------------------------------------------------+
| SUBDATE('1998-01-02', INTERVAL 31 DAY)                  |
+---------------------------------------------------------+
| 1997-12-02                                              |
+---------------------------------------------------------+
1 row in set (0.00 sec)
Функции даты и времени
MySQL содержит множество функций, которые используются для обработки даты и времени. В приведенной ниже таблице представлен список наиболее часто используемых функций:
| Функция | Описание | 
| ADDDATE() | Добавляет дату. | 
| ADDTIME() | Добавляет время. | 
| CONVERT_TZ() | Конвертирует из одного часового пояса в другой. | 
| CURDATE() | Возвращает текущую дату. | 
| CURTIME() | Возвращает текущее системное время. | 
| DATE_ADD() | Добавляет одну дату к другой. | 
| MySQL DATE FORMAT () | Задает указанный формат даты. | 
| DATE() | Извлекает часть даты из даты или выражения дата-время. | 
| DATEDIFF() | Вычитает одну дату из другой. | 
| DAYNAME() | Возвращает день недели. | 
| DAYOFMONTH() | Возвращает день месяца (1-31). | 
| DAYOFWEEK() | Возвращает индекс дня недели из аргумента. | 
| DAYOFYEAR() | Возвращает день года (1-366). | 
| EXTRACT | Извлекает часть даты. | 
| FROM_DAYS() | Преобразует номер дня в дату. | 
| FROM_UNIXTIME() | Задает формат даты в формате UNIX. | 
| MySQL DATE_SUB() | Вычитает одну дату из другой. | 
| HOUR() | Извлекает час. | 
| LAST_DAY | Возвращает последний день месяца для аргумента. | 
| MAKEDATE() | Создает дату из года и дня года. | 
| MAKETIME () | Возвращает значение времени. | 
| MICROSECOND() | Возвращает миллисекунды из аргумента. | 
| MINUTE() | Возвращает минуты из аргумента. | 
| MONTH() | Возвращает месяц из переданной даты. | 
| MONTHNAME() | Возвращает название месяца. | 
| NOW() | Возвращает текущую дату и время. | 
| PERIOD_ADD() | Добавляет интервал к месяцу-году. | 
| PERIOD_DIFF() | Возвращает количество месяцев между двумя периодами. | 
| QUARTER() | Возвращает четверть часа из переданной даты в качестве аргумента. | 
| SEC_TO_TIME() | Конвертирует секунды в формат ‘ЧЧ:MM:СС’. | 
| SECOND() | Возвращает секунду (0-59). | 
| MySQL STR TO DATE () | Преобразует строку в дату. | 
| SUBTIME() | Вычитает время. | 
| SYSDATE() | Возвращает время, в которое была выполнена функция. | 
| TIME_FORMAT() | Задает формат времени. | 
| TIME_TO_SEC() | Возвращает аргумент, преобразованный в секунды. | 
| TIME() | Выбирает часть времени из выражения, передаваемого в качестве аргумента. | 
| TIMEDIFF() | Вычитает время. | 
| TIMESTAMP() | С одним аргументом эта функция возвращает дату или выражение дата-время. С двумя аргументами возвращается сумма аргументов. | 
| TIMESTAMPADD() | Добавляет интервал к дате-времени. | 
| TIMESTAMPDIFF() | Вычитает интервал из даты — времени. | 
| TO_DAYS() | Возвращает аргумент даты, преобразованный в дни. | 
| UNIX_TIMESTAMP() | Извлекает дату-время в формате UNIX в формат, принимаемый MySQL. | 
| UTC_DATE() | Возвращает текущую дату по универсальному времени (UTC). | 
| UTC_TIME() | Возвращает текущее время по универсальному времени (UTC). | 
| UTC_TIMESTAMP() | Возвращает текущую дату-время по универсальному времени (UTC). | 
| WEEK() | Возвращает номер недели. | 
| WEEKDAY() | Возвращает индекс дня недели. | 
| WEEKOFYEAR() | Возвращает календарную неделю даты (1-53). | 
| YEAR() | Возвращает год. | 
| YEARWEEK() | Возвращает год и неделю. | 
Вы можете поэкспериментировать с этими функциями MySQL date format, даже не занося никаких данных в таблицу. Например:
mysql> SELECT NOW(); +---------------------+ | NOW() | +---------------------+ | 2007-10-23 11:46:31 | +---------------------+ 1 row in set (0.00 sec)
Вы можете попробовать сочетание нескольких функций в одном запросе (например, чтобы найти день недели):
mysql> SELECT MONTHNAME(NOW()); +------------------+ | MONTHNAME(NOW()) | +------------------+ | October | +------------------+ 1 row in set (0.00 sec)
Пример
Рассмотрим примеры MySQL функции DATE_SUB, чтобы понять, как использовать функцию DATE_SUB в MySQL.
Например:
MySQL
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21.000001’, INTERVAL 4 MICROSECOND);
#Результат: 2014-11-02 08:44:20.999997
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21’, INTERVAL -20 SECOND);
#Результат: 2014-11-02 08:44:41
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21’, INTERVAL 25 MINUTE);
#Результат: 2014-11-02 08:19:21
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21’, INTERVAL 2 HOUR);
#Результат: 2014-11-02 06:44:21
mysql> SELECT DATE_SUB(‘2014-11-02’, INTERVAL 10 DAY);
#Результат: 2014-10-23
mysql> SELECT DATE_SUB(‘2014-11-02’, INTERVAL 12 WEEK);
#Результат: 2014-08-10
mysql> SELECT DATE_SUB(‘2014-11-02’, INTERVAL 3 MONTH);
#Результат: 2014-08-02
mysql> SELECT DATE_SUB(‘2014-11-02’, INTERVAL 3 QUARTER);
#Результат: 2014-02-02
mysql> SELECT DATE_SUB(‘2014-11-02’, INTERVAL 5 YEAR);
#Результат: 2009-11-02
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21.000001’, INTERVAL ‘12.000001’ SECOND_MICROSECOND);
#Результат: 2014-11-02 08:44:09
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21.000001’, INTERVAL ‘3:12.000001’ MINU
#Результат: 2014-11-02 08:41:09
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21’, INTERVAL ‘3:12’ MINUTE_SECOND);
#Результат: 2014-11-02 08:41:09
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21.000001’, INTERVAL ‘1:03:12.000001’ HOUR_MICROSECOND);
#Результат: 2014-11-02 07:41:09
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21’, INTERVAL ‘1:03:12’ HOUR_SECOND);
#Результат: 2014-11-02 07:41:09
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21’, INTERVAL ‘1:03’ HOUR_MINUTE);
#Результат: 2014-11-02 07:41:21
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21.000001’, INTERVAL ‘7 1:03:12.000001’ DAY_MICROSECOND);
#Результат: 2014-10-26 07:41:09
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21’, INTERVAL ‘7 1:03:12’ DAY_SECOND);
#Результат: 2014-10-26 07:41:09
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21’, INTERVAL ‘7 1:03’ DAY_MINUTE);
#Результат: 2014-10-26 07:41:21
mysql> SELECT DATE_SUB(‘2014-11-02 08:44:21’, INTERVAL ‘7 1’ DAY_HOUR);
#Результат: 2014-10-26 07:44:21
mysql> SELECT DATE_SUB(‘2014-11-02’, INTERVAL ‘5-3’ YEAR_MONTH);
#Результат: 2009-08-02
| 1 | mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21.000001’,INTERVAL4MICROSECOND); #Результат: 2014-11-02 08:44:20.999997 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21’,INTERVAL-20SECOND); #Результат: 2014-11-02 08:44:41 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21’,INTERVAL25MINUTE); #Результат: 2014-11-02 08:19:21 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21’,INTERVAL2HOUR); #Результат: 2014-11-02 06:44:21 mysql>SELECTDATE_SUB(‘2014-11-02’,INTERVAL10DAY); #Результат: 2014-10-23 mysql>SELECTDATE_SUB(‘2014-11-02’,INTERVAL12WEEK); #Результат: 2014-08-10 mysql>SELECTDATE_SUB(‘2014-11-02’,INTERVAL3MONTH); #Результат: 2014-08-02 mysql>SELECTDATE_SUB(‘2014-11-02’,INTERVAL3QUARTER); #Результат: 2014-02-02 mysql>SELECTDATE_SUB(‘2014-11-02’,INTERVAL5YEAR); #Результат: 2009-11-02 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21.000001’,INTERVAL’12.000001’SECOND_MICROSECOND); #Результат: 2014-11-02 08:44:09 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21.000001’,INTERVAL’3:12.000001’MINU #Результат: 2014-11-02 08:41:09 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21’,INTERVAL’3:12’MINUTE_SECOND); #Результат: 2014-11-02 08:41:09 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21.000001’,INTERVAL’1:03:12.000001’HOUR_MICROSECOND); #Результат: 2014-11-02 07:41:09 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21’,INTERVAL’1:03:12’HOUR_SECOND); #Результат: 2014-11-02 07:41:09 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21’,INTERVAL’1:03’HOUR_MINUTE); #Результат: 2014-11-02 07:41:21 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21.000001’,INTERVAL’7 1:03:12.000001’DAY_MICROSECOND); #Результат: 2014-10-26 07:41:09 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21’,INTERVAL’7 1:03:12’DAY_SECOND); #Результат: 2014-10-26 07:41:09 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21’,INTERVAL’7 1:03’DAY_MINUTE); #Результат: 2014-10-26 07:41:21 mysql>SELECTDATE_SUB(‘2014-11-02 08:44:21’,INTERVAL’7 1’DAY_HOUR); #Результат: 2014-10-26 07:44:21 mysql>SELECTDATE_SUB(‘2014-11-02’,INTERVAL’5-3’YEAR_MONTH); #Результат: 2009-08-02 | 
TIME_FORMAT(time,format)
This function is used like the DATE_FORMAT() function, but the format string may contain format specifiers only for hours, minutes and seconds.
If the time value contains an hour part that is greater than 23, the %H and %k hour format specifiers produce a value larger than the usual range of 0 to 23. The other hour format specifiers produce the hour value modulo 12.
mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
+---------------------------------------------------------+
| TIME_FORMAT('100:00:00', '%H %k %h %I %l')              |
+---------------------------------------------------------+
| 100 100 04 04 4                                         |
+---------------------------------------------------------+
1 row in set (0.00 sec)
SQL Справочник
SQL Ключевые слова
  ADD
  ADD CONSTRAINT
  ALTER
  ALTER COLUMN
  ALTER TABLE
  ALL
  AND
  ANY
  AS
  ASC
  BACKUP DATABASE
  BETWEEN
  CASE
  CHECK
  COLUMN
  CONSTRAINT
  CREATE
  CREATE DATABASE
  CREATE INDEX
  CREATE OR REPLACE VIEW
  CREATE TABLE
  CREATE PROCEDURE
  CREATE UNIQUE INDEX
  CREATE VIEW
  DATABASE
  DEFAULT
  DELETE
  DESC
  DISTINCT
  DROP
  DROP COLUMN
  DROP CONSTRAINT
  DROP DATABASE
  DROP DEFAULT
  DROP INDEX
  DROP TABLE
  DROP VIEW
  EXEC
  EXISTS
  FOREIGN KEY
  FROM
  FULL OUTER JOIN
  GROUP BY
  HAVING
  IN
  INDEX
  INNER JOIN
  INSERT INTO
  INSERT INTO SELECT
  IS NULL
  IS NOT NULL
  JOIN
  LEFT JOIN
  LIKE
  LIMIT
  NOT
  NOT NULL
  OR
  ORDER BY
  OUTER JOIN
  PRIMARY KEY
  PROCEDURE
  RIGHT JOIN
  ROWNUM
  SELECT
  SELECT DISTINCT
  SELECT INTO
  SELECT TOP
  SET
  TABLE
  TOP
  TRUNCATE TABLE
  UNION
  UNION ALL
  UNIQUE
  UPDATE
  VALUES
  VIEW
  WHERE
MySQL Функции
Функции строк
ASCII
CHAR_LENGTH
CHARACTER_LENGTH
CONCAT
CONCAT_WS
FIELD
FIND_IN_SET
FORMAT
INSERT
INSTR
LCASE
LEFT
LENGTH
LOCATE
LOWER
LPAD
LTRIM
MID
POSITION
REPEAT
REPLACE
REVERSE
RIGHT
RPAD
RTRIM
SPACE
STRCMP
SUBSTR
SUBSTRING
SUBSTRING_INDEX
TRIM
UCASE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATAN2
AVG
CEIL
CEILING
COS
COT
COUNT
DEGREES
DIV
EXP
FLOOR
GREATEST
LEAST
LN
LOG
LOG10
LOG2
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SUM
TAN
TRUNCATE
Функции дат
ADDDATE
ADDTIME
CURDATE
CURRENT_DATE
CURRENT_TIME
CURRENT_TIMESTAMP
CURTIME
DATE
DATEDIFF
DATE_ADD
DATE_FORMAT
DATE_SUB
DAY
DAYNAME
DAYOFMONTH
DAYOFWEEK
DAYOFYEAR
EXTRACT
FROM_DAYS
HOUR
LAST_DAY
LOCALTIME
LOCALTIMESTAMP
MAKEDATE
MAKETIME
MICROSECOND
MINUTE
MONTH
MONTHNAME
NOW
PERIOD_ADD
PERIOD_DIFF
QUARTER
SECOND
SEC_TO_TIME
STR_TO_DATE
SUBDATE
SUBTIME
SYSDATE
TIME
TIME_FORMAT
TIME_TO_SEC
TIMEDIFF
TIMESTAMP
TO_DAYS
WEEK
WEEKDAY
WEEKOFYEAR
YEAR
YEARWEEK
Функции расширений
BIN
BINARY
CASE
CAST
COALESCE
CONNECTION_ID
CONV
CONVERT
CURRENT_USER
DATABASE
IF
IFNULL
ISNULL
LAST_INSERT_ID
NULLIF
SESSION_USER
SYSTEM_USER
USER
VERSION
SQL Server функции
Функции строк
ASCII
CHAR
CHARINDEX
CONCAT
Concat with +
CONCAT_WS
DATALENGTH
DIFFERENCE
FORMAT
LEFT
LEN
LOWER
LTRIM
NCHAR
PATINDEX
QUOTENAME
REPLACE
REPLICATE
REVERSE
RIGHT
RTRIM
SOUNDEX
SPACE
STR
STUFF
SUBSTRING
TRANSLATE
TRIM
UNICODE
UPPER
Функции чисел
ABS
ACOS
ASIN
ATAN
ATN2
AVG
CEILING
COUNT
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
PI
POWER
RADIANS
RAND
ROUND
SIGN
SIN
SQRT
SQUARE
SUM
TAN
Функции дат
CURRENT_TIMESTAMP
DATEADD
DATEDIFF
DATEFROMPARTS
DATENAME
DATEPART
DAY
GETDATE
GETUTCDATE
ISDATE
MONTH
SYSDATETIME
YEAR
Функции расширений
CAST
COALESCE
CONVERT
CURRENT_USER
IIF
ISNULL
ISNUMERIC
NULLIF
SESSION_USER
SESSIONPROPERTY
SYSTEM_USER
USER_NAME
MS Access функции
Функции строк
Asc
Chr
Concat with &
CurDir
Format
InStr
InstrRev
LCase
Left
Len
LTrim
Mid
Replace
Right
RTrim
Space
Split
Str
StrComp
StrConv
StrReverse
Trim
UCase
Функции чисел
Abs
Atn
Avg
Cos
Count
Exp
Fix
Format
Int
Max
Min
Randomize
Rnd
Round
Sgn
Sqr
Sum
Val
Функции дат
Date
DateAdd
DateDiff
DatePart
DateSerial
DateValue
Day
Format
Hour
Minute
Month
MonthName
Now
Second
Time
TimeSerial
TimeValue
Weekday
WeekdayName
Year
Другие функции
CurrentUser
Environ
IsDate
IsNull
IsNumeric
SQL ОператорыSQL Типы данныхSQL Краткий справочник
Синтаксис
Синтаксис MySQL функции DATE_FORMAT:
DATE_FORMAT( date, format_mask )
Параметры или аргументы
date — дата для форматирования.
format_mask — формат, который необходимо применить к дате. Ниже приведен список опций для параметра format_mask. Эти параметры могут использоваться во многих комбинациях.
| Значение | Описание | 
|---|---|
| %a | Сокращенное название дня недели (Sun до Sat) | 
| %b | Сокращенное название месяца (Jan до Dec) | 
| %c | Числовое значение месяца (0 до 12) | 
| %D | День месяца в виде числового значения, за которым следует суффикс (1st, 2nd, 3rd, …) | 
| %d | День месяца в виде числового значения (от 01 до 31) | 
| %e | День месяца в виде числового значения (от 0 до 31) | 
| %f | Микросекунды (от 000000 до 999999) %f доступны начиная с MySQL 4.1.1 | 
| %H | Час (от 00 до 23) | 
| %h | Час (от 00 до 12) | 
| %I | Час (от 00 до 12) | 
| %i | Минуты (от 00 до 59) | 
| %j | День года (001 — 366) | 
| %k | Час (от 00 до 23) | 
| %l | Час (от 1 до 12) | 
| %M | Название месяца полностью (January to December) | 
| %m | Название месяца в виде числового значения (от 00 до 12) | 
| %p | До или после полудня AM или PM | 
| %r | Время в 12-часовом формате AM или PM (hh:mm:ss AM/PM) | 
| %S | Секунды (от 00 до 59) | 
| %s | Секунды (от 00 до 59) | 
| %T | Время в 24-часовом формате (hh:mm:ss) | 
| %U | Неделя, где Sunday — первый день недели (от 00 до 53) | 
| %u | Неделя, где Monday — это первый день недели (от 00 до 53) | 
| %V | Неделя, где Sunday — первый день недели (от 01 до 53). Доступно начиная с версии MySQL 3.23.8 и используется с %X | 
| %v | Неделя, где Monday — первый день недели (от 01 до 53). Доступно начиная с версии MySQL 3.23.8 и используется с %X | 
| %W | Имя дня недели полностью (Sunday to Saturday) | 
| %w | День недели, где Sunday=0 and Saturday=6 | 
| %X | Год недели, где Sunday — первый день недели. Доступно начиная с версии MySQL 3.23.8 и используется с% V | 
| %x | Год недели, где Monday — первый день недели. Доступно начиная с MySQL 3.23.8 и используется с %v | 
| %Y | Год в виде числового значения из 4 цифр | 
| %y | Год в виде числового значения из 2 цифр | 

 
							 
							