T-SQL datediff Nesmyslný výsledek – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

T-SQL datediff Nesmyslný výsledek – .NET – Fórum – Programujte.comT-SQL datediff Nesmyslný výsledek – .NET – Fórum – Programujte.com

 

Alex95
~ Anonymní uživatel
7 příspěvků
8. 8. 2015   #1
-
0
-

Ahoj,

může mi prosím někdo vysvětlit, proč mi SQL dotaz na rozdíl dvou stejných datumů vrací, že je rozdíl 115let? Kde dělám chybu?

 

DECLARE @sql_statement nvarchar(250)
Declare @dal  datedeclare @dat varchar(20)
set @dal = '07.08.2015'
SET @dat = Convert(Varchar(20),@dal,101)
SET @sql_statement = 'SELECT datediff(yy,'+@dat+',DateEx) FROM ExData ' 

EXECute sp_executesql  @sql_statement

Připojen obrázek.

Nahlásit jako SPAM
IP: 2a00:1028:83b0:7bd6:280d:...–
P
~ Anonymní uživatel
212 příspěvků
10. 8. 2015   #2
-
0
-

Proc tak slozite?

DECLARE @dal DATE;
SET @dal = '20150807';
SELECT DATEDIFF(yy, @dal, DateEx) FROM ExData

Viz https://msdn.microsoft.com/en-us/library/bb630352.aspx - Supported String Literal Formats for date.
Pouzity format je nezavisly na nastavenem jazykovem prostredi.

Ve tvem reseni je konkretne chyba v nastaveni toho sql statementu, protoze @dat je stringova konstanta s datem, a tedy ji tak musis pouzit ve funkci DATEDIFF: 

SET @sql_statement = 'SELECT datediff(yy,'''+@dat+''',DateEx) FROM ExData '

Vygenerovany sql statement ma byt 

SELECT datediff(yy,'07/08/2015',DateEx) FROM ExData

a tvuj je 

SELECT datediff(yy,07/08/2015,DateEx) FROM ExData

Takto zadanou hodnotu data SQL Server nerozezna a nahradi ji defaultni hodnotou 1.1.1900.

Nahlásit jako SPAM
IP: 85.93.116.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý