Тип даты SQL с форматом - PullRequest
       6

Тип даты SQL с форматом

0 голосов
/ 11 октября 2019

Мне нужен этот формат для моих данных 'MM-dd-yyyy hh:mm tt'

CREATE TABLE [dbo].[Bills] 
(
    [Ordernum]  INT       IDENTITY (1, 1) NOT NULL,
    [BillDate]  DATETIME  NOT NULL,
    [ItemsID]   INT       NOT NULL,
    [ClientID]  INT       NOT NULL,
    [PrisNoB]   FLOAT(53) NOT NULL,
    [PrisWithB] FLOAT(53) NOT NULL,

    PRIMARY KEY CLUSTERED ([Ordernum] ASC),

    CONSTRAINT [FKClient] 
         FOREIGN KEY ([ClientID]) REFERENCES [dbo].[Client] ([Id]),
    CONSTRAINT [FKItems] 
         FOREIGN KEY ([ItemsID]) REFERENCES [dbo].[Items] ([Id])
);

Так, где я могу определить формат даты MM-dd-yyyy hh:mm tt?

Я пытался сделать это так:

[BillDate] DATETIME ('MM-dd-yyyy hh:mm tt') NOT NULL,

но я получаю ошибку.

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Лучшее, что вы можете сделать, - это не представление, а вычисляемый столбец. Вы можете добавить столбец, который вычисляет отформатированное значение каждый раз как:

alter table bill add billdate_formatted as (format(billdate, 'MM-dd-yyyy hh:mm tt'));

Вы можете сохранить это значение один раз, сохранив столбец:

alter table bill add billdate_formatted as (format(billdate, 'MM-dd-yyyy hh:mm tt')) persisted;

Оба эти параметра гарантируют, что billdate_formatted всегда синхронизируется с billdate.

Я не рекомендую persisted. Это обычно используется, когда вы хотите использовать вычисляемый столбец в индексе (хотя есть и другие ситуации).

0 голосов
/ 11 октября 2019

Как уже говорилось, SQL хранит дату в своем внутреннем формате, поэтому все, что вы можете сделать, это указать тип данных, который будет datetime. Нет возможности изменить формат даты, в которой она будет храниться (для всех, почему, по вашему мнению, важно для компьютера, в каком формате он находится? Это просто набор цифр, содержащих информацию о дате). ..).

Лучшее, что вы можете сделать, это определить view, который будет использовать функцию format. См. FORMAT (Transact-SQL)

Затем используйте это view вместо таблицы.

Другой способ - написать запрос, который вернет дату в нужном формате,снова используя функцию format.

Еще один вариант, поскольку вы указали тэг WPF, - это получать данные в программу и обрабатывать форматирование на уровне представления, т.е. в вашей программе. Это, IMO, лучший вариант, потому что он хорошо разделяет уровень данных и уровень представления.

...