Как сохранить дату в другом формате на SQL сервере - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь сохранить дату в формате yyyy-mm-dd вместо yyyy-dd-mm в моей базе данных. Я добавил

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

в класс модели, но результат не изменился. Дата по-прежнему yyyy-dd-mm формат в базе данных.

Нужно ли делать это с кодом C# Я не могу ничего изменить в таблице базы данных. Как я могу это сделать?

Ответы [ 2 ]

6 голосов
/ 31 марта 2020

Даты в (реляционной) базе данных должны храниться в столбце datetime или эквиваленте для любой используемой вами базы данных (SQL документация сервера ). Вы можете выбрать любой формат для отображения даты в вашем приложении, который не имеет отношения к тому, как хранится.

Если вы храните даты в базе данных в текстовом формате, вы сохраняете мир боль, которая вернется, чтобы причинить тебе боль позже.

0 голосов
/ 31 марта 2020

Если ваш столбец является строковым столбцом, вы должны изменить его и использовать столбец даты, как упомянул MarcE. Но, согласно тому, что я понял, у вас есть столбец Date и вы хотите изменить формат.

В sql дата сервера не хранится как строка. И формат, который вы видите, связан с сопоставлением вашей базы данных.

Если вы хотите изменить его, вы должны попытаться изменить формат даты вашей базы данных.

    -- Set date format to day/month/year.  
    SET DATEFORMAT dmy;  
    GO  
    DECLARE @datevar datetime2 = '31/12/2008 09:01:01.1234567';  
    SELECT @datevar;  
    GO  
    -- Result: 2008-12-31 09:01:01.123  
    SET DATEFORMAT dmy;  
    GO  
    DECLARE @datevar datetime2 = '12/31/2008 09:01:01.1234567';  
    SELECT @datevar;  
    GO  
    -- Result: Msg 241: Conversion failed when converting date and/or time -- from 
    character string.  

    GO  

https://docs.microsoft.com/en-us/sql/t-sql/statements/set-dateformat-transact-sql?view=sql-server-ver15

...