Sysdatetime (transact-sql)sysdatetime (transact-sql)
Содержание:
- EXTRACT(unit FROM date)
- Синтаксис
- Извлечение данных по дате и времени
- Функции даты и времени
- SQL Справочник
- STR_TO_DATE(str,format)
- CURTIME()
- Oracle
- SQL Server
- CURDATE()
- DATE_FORMAT(date,format)
- CONVERT_TZ(dt,from_tz,to_tz)
- Функции, характеризующие момент (значение аргумента)
- TIME_FORMAT(time,format)
- SQL Учебник
- WEEK(date[,mode])
- Функции для преобразования разницы в дни и секунды
EXTRACT(unit FROM date)
The EXTRACT() function uses the same kinds of unit specifiers as DATE_ADD() or DATE_SUB(), but extracts parts from the date rather than performing date arithmetic.
mysql> SELECT EXTRACT(YEAR FROM '1999-07-02'); +---------------------------------------------------------+ | EXTRACT(YEAR FROM '1999-07-02') | +---------------------------------------------------------+ | 1999 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03'); +---------------------------------------------------------+ | EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03') | +---------------------------------------------------------+ | 199907 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
Синтаксис
Синтаксис 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 цифр |
Извлечение данных по дате и времени
В 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)
Функции даты и времени
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)
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 Краткий справочник
STR_TO_DATE(str,format)
This is the inverse of the DATE_FORMAT() function. It takes a string str and a format string format. The STR_TO_DATE() function returns a DATETIME value if the format string contains both date and time parts. Else, it returns a DATE or TIME value if the string contains only date or time parts.
mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y'); +---------------------------------------------------------+ | STR_TO_DATE('04/31/2004', '%m/%d/%Y') | +---------------------------------------------------------+ | 2004-04-31 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
CURTIME()
Returns the current time as a value in ‘HH:MM:SS’ or HHMMSS format, depending on whether the function is used in a string or in a numeric context. The value is expressed in the current time zone.
mysql> SELECT CURTIME(); +---------------------------------------------------------+ | CURTIME() | +---------------------------------------------------------+ | 23:50:26 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT CURTIME() + 0; +---------------------------------------------------------+ | CURTIME() + 0 | +---------------------------------------------------------+ | 235026 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
Oracle
There are a few ways to get the current date in Oracle SQL.
Function | Data Type | Returns |
SYSDATE | date | Current date and time of the server |
CURRENT_DATE | date | Current date and time in the session time zone |
CURRENT_TIMESTAMP | timestamp with time zone | Current date and time with time zone in the session time zone |
LOCALTIMESTAMP | timestamp | Current date and time in the session time zone |
SYSTIMESTAMP | timestamp with time zone | Current date and time of the server |
The method you use depends on which data type you want and whether you want the server or session time zone.
Let’s see some examples of these functions.
The results are below (translated to rows to make it easier to compare):
Function | Result |
SYSDATE | 15-JUL-20 |
CURRENT_DATE | 15-JUL-20 |
CURRENT_TIMESTAMP | 15-JUL-20 12.08.25.095819 AM US/PACIFIC |
LOCALTIMESTAMP | 15-JUL-20 12.08.25.095819 AM |
SYSTIMESTAMP | 15-JUL-20 07.08.25.095818 AM +00:00 |
We can see a few things here:
- SYSDATE and CURRENT_DATE show a similar output.
- CURRENT_TIMESTAMP and LOCALTIMESTAMP show the same value but one is with the timezone and one is without.
One thing to be aware of is that even though SYSDATE and CURRENT_DATE display the date here, they actually include the time.
To see the time component, we can use TO_CHAR, which shows the difference between the two functions:
Operation | Result |
SYSDATE | 15-JUL-20 |
SYSDATE_FULL | 2020-07-15 06:51:58 |
CURRENT_DATE | 15-JUL-20 |
CURRENT_DATE_FULL | 2020-07-15 11:51:58 |
We can see that both dates are the same, but the times are different.
What’s the Difference Between SYSDATE and CURRENT_DATE in Oracle?
These two functions look like they show the same thing. So how are they different?
SYSDATE is based on the server, and CURRENT_DATE is based on the user’s session.
This means if the user is based in New York and the database server is in London, the SYSDATE function will return the London date and time, and the CURRENT_DATE function will return the New York date and time.
SQL Server
There are several ways to get the current date in SQL Server, and all of them use functions.
Function | Data Type | Returns |
SYSDATETIME() | datetime2 | Server date time to 7 fractional seconds |
SYSDATETIMEOFFSET() | datetimeoffset | Server date time with time zone to 7 fractional seconds |
SYSUTCDATETIME() | datetime2 | Server date time in UTC to 7 fractional seconds |
CURRENT_TIMESTAMP | datetime | Server date time to 3 fractional seconds |
GETDATE() | datetime | Server date time to 3 fractional seconds |
GETUTCDATE() | datetime | Server date time in UTC to 3 fractional seconds |
These six functions all return the date and time to different amounts of fractional seconds or based on time zones. Notice that CURRENT_TIMESTAMP does not need any opening or closing brackets.
(You can read more about MySQL date data types and functions in this guide)
Let’s see an example of this.
The results are below (translated to rows to make it easier to compare):
Function | Result |
SYSDATETIME() | 2020-07-15 16:24:38.7750094 |
SYSDATETIMEOFFSET() | 2020-07-15 16:24:38.7750094 +00:00 |
SYSUTCDATETIME() | 2020-07-15 06:24:38.7750094 |
CURRENT_TIMESTAMP | 2020-07-15 16:24:38.773 |
GETDATE() | 2020-07-15 16:24:38.773 |
GETUTCDATE() | 2020-07-15 06:24:38.773 |
You can see some differences here:
- The first three functions show fractional seconds to 7 places.
- The two UTC time functions show the current time in the UTC time zone. I ran these functions in Melbourne, Australia, which is UTC +10.
You can also see that CURRENT_TIMESTAMP and GETDATE() show the same values.
CURRENT_TIMESTAMP vs GETDATE
What’s the difference between CURRENT_TIMESTAMP and GETDATE() in SQL Server?
CURRENT_TIMESTAMP is an ANSI SQL compliant function, meaning it complies with the standards (and is likely to exist in other database vendors). GETDATE() is the T-SQL version of that function.
How to Get Just the Current Date in SQL Server
The functions above show the current date and time.
But what if you only want to get the current date, and not the time?
There are two ways you can do that: use CAST or use CONVERT.
I’ve written about this method in a recent post: How to Convert DATETIME to DATE in SQL Server.
Here’s an example:
Result:
date_cast | date_convert |
2020-07-15 | 2020-07-15 |
Both methods return the same value.
CURDATE()
Returns the current date as a value in ‘YYYY-MM-DD’ or YYYYMMDD format, depending on whether the function is used in a string or in a numeric context.
mysql> SELECT CURDATE(); +---------------------------------------------------------+ | CURDATE() | +---------------------------------------------------------+ | 1997-12-15 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT CURDATE() + 0; +---------------------------------------------------------+ | CURDATE() + 0 | +---------------------------------------------------------+ | 19971215 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
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)
CONVERT_TZ(dt,from_tz,to_tz)
This converts a datetime value dt from the time zone given by from_tz to the time zone given by to_tz and returns the resulting value. This function returns NULL if the arguments are invalid.
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET'); +---------------------------------------------------------+ | CONVERT_TZ('2004-01-01 12:00:00','GMT','MET') | +---------------------------------------------------------+ | 2004-01-01 13:00:00 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00'); +---------------------------------------------------------+ | CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00') | +---------------------------------------------------------+ | 2004-01-01 22:00:00 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
Функции, характеризующие момент (значение аргумента)
DATE(datetime) — извлекает из значения даты и времени суток
в формате DATETIME (‘YYYY-MM-DD hh:mm:ss’) только дату, отсекая часы, минуты и секунды.
TIME(datetime) — извлекает из значения даты и времени суток
в формате DATETIME (‘YYYY-MM-DD hh:mm:ss’) только время суток, отсекая дату.
TIMESTAMP(param) — принимает в качестве аргумента дату и время
суток в полном или кратком формате и возвращает полный вариант в формате
DATETIME (‘YYYY-MM-DD hh:mm:ss’).
DAY(date), DAYOFMONTH(date) — принимают в качестве аргумента дату,
и возвращают порядковый номер дня в месяце (от 1 до 31).
DAYNAME(date) — принимает в качестве аргумента дату,
и возвращает день недели в виде полного слова на английском языке.
DAYOFWEEK(date) — принимает в качестве аргумента дату,
и возвращает порядкоый номер дня недели от 1 (воскресенье) до 7 (суббота).
WEEKDAY(date) — принимает в качестве аргумента дату,
и возвращает порядкоый номер дня недели от 0 (понедельник) до 6 (воскресенье).
WEEK(date) — принимает в качестве аргумента дату,
и возвращает номер недели в году для этой даты от 0 до 53.
WEEKOFYEAR(datetime) — возвращает порядковый номер недели в году
для даты datetime от 1 до 53.
MONTH(datetime) — возвращает числовое значение месяца года от 1 до 12
для даты datetime.
MONTHNAME(datetime) — возвращает строку с названием месяца
для даты datetime.
QUARTER(datetime) — возвращает значение квартала от 1 до 4
для даты datetime, которая может быть передана в формате ‘YYYY-MM-DD’ или ‘YYYY-MM-DD hh:mm:ss’.
YEAR(datetime) — возвращает год от 1000 до 9999
для даты datetime.
DAYOFYEAR(date) — возвращает порядковый номер дня в году
от 1 до 366 для даты date.
HOUR(datetime) — возвращает значение часа от 0 до 23 для
времени datetime.
MINUTE(datetime) — возвращает значение минут от 0 до 59 для
времени datetime.
SECOND(time) — возвращает количество секунд для времени суток
time, которое задаётся либо в виде строки ‘hh:mm:ss’, либо числа hhmmss.
EXTRACT(type FROM datetime) — принимает дату и время суток datetime
и возвращает часть, определяемую параметром type. Значениями параметра могут быть YEAR, MONTH, DAY,
HOUR, MINUTE, SECOND.
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 Главная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 Комментарии
WEEK(date[,mode])
This function returns the week number for date. The two-argument form of WEEK() allows you to specify whether the week starts on a Sunday or a Monday and whether the return value should be in the range from 0 to 53 or from 1 to 53. If the mode argument is omitted, the value of the default_week_format system variable is used
Mode | First Day of week | Range | Week 1 is the first week. |
---|---|---|---|
Sunday | 0-53 | with a Sunday in this year | |
1 | Monday | 0-53 | with more than 3 days this year |
2 | Sunday | 1-53 | with a Sunday in this year |
3 | Monday | 1-53 | with more than 3 days this year |
4 | Sunday | 0-53 | with more than 3 days this year |
5 | Monday | 0-53 | with a Monday in this year |
6 | Sunday | 1-53 | with more than 3 days this year |
7 | Monday | 1-53 | with a Monday in this year |
mysql> SELECT WEEK('1998-02-20'); +---------------------------------------------------------+ | WEEK('1998-02-20') | +---------------------------------------------------------+ | 7 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
Функции для преобразования разницы в дни и секунды
TO_DAYS(date) — принимает дату date в кратком ‘YYYY-MM-DD’ или
полном формате ‘YYYY-MM-DD hh:mm:ss’ и возвращает количество дней, прошедших с нулевого года.
FROM_DAYS(N) — принимает количество дней N, прошедших
с нулевого года, и возвращает дату в формате ‘YYYY-MM-DD’.
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(datetime) — если параметр не
указан, то возвращает количество секунд, прошедших с 00:00 1 января 1970 года. Если параметр datetime
указан (в кратком ‘YYYY-MM-DD’ или полном формате ‘YYYY-MM-DD hh:mm:ss’), то возвращает разницу
в секундах между 00:00 1 января 1970 года и датой datetime.
FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp, format) —
принимает количество секунд, прошедших с 00:00 1 января 1970 года и возвращает дату и время суток
в виде строки ‘YYYY-MM-DD hh:mm:ss’ или в виде числа YYYYDDMMhhmmss в зависимости от того, вызвана
функция в строковом или числовом контексте.
TIME_TO_SEC(time) — принимает время суток time в формате
‘hh:mm:ss’ и возвращает количество секунд, прошедших с начала суток.
SEC_TO_TIME(seconds) — принимает количество секунд seconds,
прошедших с начала суток и возвращает время в формате ‘hh:mm:ss’ или hhmmss в зависимости от того, вызвана
функция в строковом или числовом контексте.
MAKEDATE(year, dayofyear) — принимает год year, номер дня в году
dayofyear и возвращает дату в формате ‘YYYY-MM-DD’.
MAKETIME(hour, minute, second) — принимает часы hour, минуты
minute и секунды second и возвращает время суток в формате ‘hh:mm:ss’.
Поделиться с друзьями
Реляционные базы данных и язык SQL