sql >> Databáze >  >> RDS >> Sqlserver

Převést datum a čas na serveru SQL

Chcete-li získat "25-Oct-2010"

Za předpokladu, že hodnota je zadána jako řetězec, nikoli jako datový typ DATETIME:

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

Viz dokumentace CAST/CONVERT pro jiné formáty, ačkoli ten, který jste požadovali, vyžaduje následné zpracování.

Jak získat "2010-10-25 00:00:00.000"

Nejvýkonnějším prostředkem je použití DATEADD &DATEDIFF:

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

Reference:

Testování

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

Vrátí:

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

Dodatek

Vzhledem k tomu, že používáte SQL Server 2005, můžete si usnadnit formátování data vytvořením funkce SQLCLR, která vám umožní používat formátování data .NET.



  1. Vztah MySQL s více tabulkami

  2. Zdroj SSIS OLE DB náhodně chybí řádky ze zdroje dat Oracle

  3. Jak importovat velký soubor XML (~10 GB) do PostgreSQL

  4. Nápověda k dotazovacímu algoritmu PHP MYSQL