SQL Server: dönüştürme ((int)yıl, (int)ay, (int)gün) Datetime [yinelenen]

Olası yinelenen:

T-SQL

ile bir tarih oluşturun

her yıl, ay ve gün değerini ınts olarak depolayan bir veri tablosuna sahibim:

year | month | day
2009 |   1   |  1 
2008 |  12   |  2
2007 |   5   |  5

datetime değerine dönüştürmem gerekiyor, çünkü operasyon arasında bir datetime içinde kullanmam gerekiyor. Bunu nasıl yapabilirim?

40
tarihinde sordu Community 2009-12-17 22:03:26
kaynak

4 ответов

Dil ve yerel ayarlardan bağımsız olmak için ISO 8601 YYYYMMDD formatını kullanmalısınız - bu, herhangi bir dil ve bölgesel ayar ile herhangi bir SQL Server sisteminde çalışır:

SELECT
   CAST(
      CAST(year AS VARCHAR(4)) +
      RIGHT('0' + CAST(month AS VARCHAR(2)), 2) +
      RIGHT('0' + CAST(day AS VARCHAR(2)), 2) 
   AS DATETIME)
66
cevap marc_s 2009-12-17 22:12:48
kaynak

saf datetime çözümü, dil veya DATEFORMAT bağlı değil, hiçbir dizeleri

SELECT
    DATEADD(year, [year]-1900, DATEADD(month, [month]-1, DATEADD(day, [day]-1, 0)))
FROM
    dbo.Table
37
cevap gbn 2011-03-04 08:51:36
kaynak

değerlerinizi 'Decimal' datetime olarak dönüştürebilir ve daha sonra gerçek bir datetime sütununa dönüştürebilirsiniz:

select cast(rtrim(year *10000+ month *100+ day) as datetime) as Date from DateTable

bkz burada daha fazla bilgi için de.

8
cevap Dominik Fretz 2009-12-17 22:18:04
kaynak
SELECT CAST(CAST(year AS varchar) + '/' + CAST(month AS varchar) + '/' + CAST(day as varchar) AS datetime) AS MyDateTime
FROM table
2
cevap Agent_9191 2009-12-17 22:09:14
kaynak

Diğer sorular sql-server datetime