Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да конвертирате от един формат за дата в друг в SQL Server с помощта на CONVERT()

Понякога, когато работите с бази данни и други среди за програмиране, получавате стойност за дата, но тя е в грешен формат/тип данни. Например, ако дата е генерирана с вградена функция за дата, тя може да включва както датата, така и часа, чак до последната наносекунда. И всичко, което искате, е ден, месец и година, кажете така:2018-01-01.

Ако това се случи, докато използвате SQL сървър, можете да използвате CONVERT() функция, за да го преобразувате в друг тип данни. Когато направите това, типът данни ще определи формата, в който се появява.

Тази статия предоставя примери за използване на CONVERT() функция в SQL Server за преобразуване на стойност на дата в друг тип данни (дата).

Синтаксис

Първо, ето как върви официалният синтаксис:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

Тези аргументи се дефинират, както следва:

expression
Всякакъв валиден израз.
data_type
Целевият тип данни. Това включва xmlголям и sql_variant . Типовете данни за псевдоним не могат да се използват.
length
Незадължително цяло число, което определя дължината на целевия тип данни. Стойността по подразбиране е 30 .
style
Цялочислен израз, който указва как CONVERT() функцията ще преведе израз . За стойност на стил NULL се връща NULL. тип_данни определя обхвата.

Пример 1 – Преобразуване от SYSDATETIME() в тип данни за дата

В този пример ние генерираме текущата дата/час с SYSDATETIME() функция и го преобразувайте в дата тип данни.

Имайте предвид, че SYSDATETIME() генерира стойността си като datetime2(7) тип данни, така че ние ги преобразуваме от този тип данни в друг тип данни.

SELECT 
    SYSDATETIME() AS Original,
    CONVERT(date, SYSDATETIME()) AS Converted;

Резултат:

+-----------------------------+-------------+
| Original                    | Converted   |
|-----------------------------+-------------|
| 2018-06-06 22:53:47.2318751 | 2018-06-06  |
+-----------------------------+-------------+

Пример 2 – Преобразуване от SYSDATETIME() в тип данни smalldatetime

В този пример преобразуваме датата в smalldatetime тип данни.

SELECT 
    SYSDATETIME() AS Original,
    CONVERT(smalldatetime, SYSDATETIME()) AS Converted;

Резултат:

+-----------------------------+---------------------+
| Original                    | Converted           |
|-----------------------------+---------------------|
| 2018-06-06 22:56:51.6873250 | 2018-06-06 22:57:00 |
+-----------------------------+---------------------+

Пример 3 – Преобразуване от SYSDATETIME() в datetimeoffset Тип данни

В този пример преобразуваме датата в datetimeoffset тип данни.

SELECT 
    SYSDATETIME() AS Original,
    CONVERT(datetimeoffset, SYSDATETIME()) AS Converted;

Резултат:

+-----------------------------+------------------------------------+
| Original                    | Converted                          |
|-----------------------------+------------------------------------|
| 2018-06-07 09:17:15.2410693 | 2018-06-07 09:17:15.2410693 +00:00 |
+-----------------------------+------------------------------------+

Пример 4 – Преобразуване от SYSDATETIME() във времеви тип данни

Не сте ограничени до показване на компонента за дата на стойността. Можете също да го преобразувате в време тип данни, така че да се връща само компонентът за време. Като това:

SELECT 
    SYSDATETIME() AS Original,
    CONVERT(time, SYSDATETIME()) AS Converted;

Резултат:

+-----------------------------+------------------+
| Original                    | Converted        |
|-----------------------------+------------------|
| 2018-06-06 23:01:41.7070775 | 23:01:41.7070775 |
+-----------------------------+------------------+

Пример 5 – Преобразуване от SYSDATETIMEOFFSET()

Всички предишни примери използват една и съща вградена функция за генериране на стойността за дата/час, но разбира се, не е необходимо тя да бъде генерирана от тази една функция. Ето пример за използване на SYSDATETIMEOFFSET() :

SELECT 
    SYSDATETIMEOFFSET() AS Original,
    CONVERT(date, SYSDATETIMEOFFSET()) AS Converted;

Резултат:

+------------------------------------+----------------------+
| Original                           | Converted            |
|------------------------------------+----------------------|
| 2018-06-07 09:12:27.3660685 +10:00 | 2018-06-07           |
+------------------------------------+----------------------+

Пример 6 – Преобразуване от заявка за база данни

Ето пример за преобразуване на датата, която е извлечена от колона в примерната база данни WideWorldImporters:

USE WideWorldImporters;
SELECT DISTINCT TOP 10 
    LastEditedWhen, 
    CONVERT(date, LastEditedWhen) AS 'Converted'
FROM Sales.CustomerTransactions;

Резултат:

+-----------------------------+-------------+
| LastEditedWhen              | Converted   |
|-----------------------------+-------------|
| 2013-01-02 11:30:00.0000000 | 2013-01-02  |
| 2013-01-03 11:30:00.0000000 | 2013-01-03  |
| 2013-01-04 11:30:00.0000000 | 2013-01-04  |
| 2013-01-05 11:30:00.0000000 | 2013-01-05  |
| 2013-01-06 11:30:00.0000000 | 2013-01-06  |
| 2013-01-08 11:30:00.0000000 | 2013-01-08  |
| 2013-01-09 11:30:00.0000000 | 2013-01-09  |
| 2013-01-10 11:30:00.0000000 | 2013-01-10  |
| 2013-01-11 11:30:00.0000000 | 2013-01-11  |
| 2013-01-12 11:30:00.0000000 | 2013-01-12  |
+-----------------------------+-------------+

Имайте предвид, че не сте ограничени само до конвертиране между два различни формата за дата. Ако имате дата, съхранена като низ например, можете също да използвате CONVERT() за да конвертирате от низ в дата, както и всеки друг тип данни, към който може да се наложи да конвертирате.

Написах също публикация, която показва как да конвертирате между формати за дата с помощта на CAST() функция, използвайки същите примери като по-горе.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проактивни проверки на състоянието на SQL Server, част 1:Дисково пространство

  2. Проверете дали RPC Out е активиран на свързан сървър

  3. Какво наистина прави методът Statement.setFetchSize(nSize) в JDBC драйвер на SQL Server?

  4. SQL Server Collection Inventory Script -2

  5. Как да конвертирате Unix Timestamp в стойност на дата/час в SQL Server