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

Конвертиране на дата и час в sql сървър

За да получите "25-Oct-2010"

Ако приемем, че стойността е предоставена като низ, а не тип данни DATETIME:

SELECT REPLACE(CONVERT(VARCHAR, CAST('2010-10-25 11:13:36.700' AS DATETIME), 106), ' ', '-')

Вижте документацията за CAST/CONVERT за други формати, въпреки че заявеният от вас изисква последваща обработка.

За да получите "2010-10-25 00:00:00.000"

Най-ефективният начин е да използвате DATEADD &DATEDIFF:

SELECT DATEADD(d, DATEDIFF(dd, 0, '2010-10-25 11:13:36.700'), 0)

Препратки:

Тестване

WITH sample AS (
   SELECT CAST('2010-10-25 11:13:36.700' AS DATETIME) dt)
SELECT REPLACE(CONVERT(VARCHAR, s.dt, 106), ' ', '-') AS col1,
       DATEADD(d, DATEDIFF(dd, 0, s.dt), 0) AS col2
  FROM sample s

Връща:

col1          col2
-------------------------------------
25-Oct-2010   2010-10-25 00:00:00.000

Допълнение

Тъй като използвате SQL Server 2005, бихте могли да улесните форматирането на дата за себе си, като създадете SQLCLR функция, която ще ви позволи да използвате форматирането на дата в .NET.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получавайте на всеки час за период от време

  2. Проблеми с производителността на SQL Server 2012 Enterprise Edition при лицензиране на CAL

  3. Мигрирайте колоната DateTime на SQL Server към DateTimeOffset

  4. Намерете не-ASCII знаци в колони varchar с помощта на SQL Server

  5. Разделяне на много голям низ с персонализиран разделител?