Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z datatime
Forum PHP.pl > Forum > Bazy danych > Microsoft SQL Server / MSDE
krzysiekkurowski
Witajcie mam problem w mojej bazie z polem datatime - data wyswietla sie z godzina a chcialem zeby tylko wyswietlala sie data probowalem ale niestety nie dam rady zmienic we wlasciwosciach kolumny na samo data.

Znalazlem w sieci komende sql do konwertowania to na sama date

  1. FROM thisTable
  2. WHERE convert (datetime, convert (varchar, datecol, 101), 101) = @yourdate


powiedzcie czy to jest prawidlowe i czy jak skonwertuje to pozniej nastepne dodane wpisy beda wyswietlane jako sama data?

jestem pocztatkujacy i nie wiem za wiele z gory dzieki
vokiel
No niestety w SQL Server nie ma funkcji DATE() jak w MySQL
  1. DateAdd(day, datediff(day,0, MydateValue), 0)

  1. SELECT CONVERT(DATETIME, CONVERT(INT, GETDATE()))


Różnie ludzie z tym kombinują: SQL Server Date-Only from DATETIME
askone
Hej

Popatrz tutaj

Pozdrawiam
mariuszhk
convert(smalldatetime,convert(nvarchar(10),left(getdate(),10),120),120)
Nie mam 100% procentowej pewności że ten kod zadziała ale sens jest taki z getdate() czyli np '2009-11-9 00:00:00' ucinasz pierwsze 10 znaków (istotna jest tu 120 określa typ wyświetlania daty), a następnie znów konvertujesz na date. Wynik powinien być '2009-11-09 00:00:00'



pozdrawiam
Gapollo
Problem dotyczył czegoś innego przecież.
Otóż nie, jak sobie obetniesz godziny minuty i sekundy z bazy danych to nie będzie to miało wpływu na następne dodane rekordy. Jak chcesz wyświetlać samą datę to rób formatowanie po stronie aplikacji, ewentualnie w zapytaniu convert [w management studio kursor na słowie convert i klawisz F1 dużo wyjaśni, formatów datetime w MSSQL jest ponad 30]
BTW zaproponowane przez vokiel'a
  1. SELECT CONVERT(DATETIME, CONVERT(INT, GETDATE()))
nie zawsze działa, a dokładniej działa do południa. Dzieje się tak dlatego, że convert z datetime na int zaokrągla a nie obcina. Poprawnie w tej konwencji byłoby
  1. SELECT CONVERT(DATETIME, CONVERT(INT, CONVERT(FLOAT,GETDATE())))

a jak chcesz wyswietlać to w selekcie:
  1. SELECT convert(varchar(10),getdate(),120) -- lub 111 ze slashami zamiast myślników
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.