Pri spustení tohto dotazu sa vyskytla chyba:
SELECT "06/30/" +
CASE WHEN GETDATE() BETWEEN Cast("1/01/" + YEAR(GETDATE()) + " 12:01:01" As DateTime) And Cast("6/30/" + YEAR(GETDATE()) + " 12:01:01" as DateTime)
THEN CAST(
YEAR(DATEADD(YY, 2, GETDATE())) AS VARCHAR(4))
WHEN GETDATE() BETWEEN Cast("7/01/" + YEAR(GETDATE()) + " 12:01:01" As DateTime) And Cast("12/31/" + YEAR(GETDATE()) + " 12:01:01" as DateTime)
THEN CAST(
YEAR(DATEADD(YY, 3, GETDATE())) AS VARCHAR(4))
END
AS DateEnding FOR XML RAW
Conversion failed when converting the varchar value "1/01/" to data type int.
odpovede:
2 pre odpoveď č. 1Musíte CAST alebo CONVERT svoje YEAR(GETDATE())
na varchar (4) pri pokuse o spojenie s textom, inak sa pokúša konvertovať text na int.
SELECT "06/30/" +
CASE WHEN GETDATE() BETWEEN Cast("1/01/" + CAST(YEAR(GETDATE()) AS VARCHAR(4)) + " 12:01:01" As DateTime) And Cast("6/30/" + CAST(YEAR(GETDATE()) AS VARCHAR(4)) + " 12:01:01" as DateTime)
THEN CAST(
YEAR(DATEADD(YY, 2, GETDATE())) AS VARCHAR(4))
WHEN GETDATE() BETWEEN Cast("7/01/" + CAST(YEAR(GETDATE()) AS VARCHAR(4)) + " 12:01:01" As DateTime) And Cast("12/31/" + CAST(YEAR(GETDATE()) AS VARCHAR(4)) + " 12:01:01" as DateTime)
THEN CAST(
YEAR(DATEADD(YY, 3, GETDATE())) AS VARCHAR(4))
END
AS DateEnding FOR XML RAW
0 pre odpoveď č. 2
JamieSee má pravdu o tom, že ho odovzdáVARCHAR (4). Lepším spôsobom by bolo formátovanie s použitím jednoznačných dátumov. SQL bude vždy pracovať od 30.6.2012 do 30. júna 2012, ale je 1. 7. 2012 1. júla (formát US) alebo 7. január (formát UK)?
SELECT "06/30/" +
CASE WHEN GETDATE() BETWEEN Cast(CAST(YEAR(GETDATE()) AS VARCHAR(4)) + "-01-01 12:01:01" As DateTime) And Cast(CAST(YEAR(GETDATE()) AS VARCHAR(4)) + "-06-30 12:01:01" as DateTime)
THEN CAST(
YEAR(DATEADD(YY, 2, GETDATE())) AS VARCHAR(4))
WHEN GETDATE() BETWEEN Cast(CAST(YEAR(GETDATE()) AS VARCHAR(4)) + "-07-01 12:01:01" As DateTime) And Cast(CAST(YEAR(GETDATE()) AS VARCHAR(4)) + "-12-31 12:01:01" as DateTime)
THEN CAST(
YEAR(DATEADD(YY, 3, GETDATE())) AS VARCHAR(4))
END
AS DateEnding FOR XML RAW