将单独的日期和时间数据类型转换为我希望在表中使用的格式

z31licg0  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(391)

我正在使用microsoft sql server management studio完成查询。
我找到的获取日期格式和时间格式的信息是:

SELECT FORMAT (GETDATE(), 'dd-MM-yyyy') AS date

SELECT FORMAT(GETDATE(), 'HH:mm') AS time

它获取当前日期和时间,并以我需要的格式呈现给我,但我想知道如何将其应用于我正在创建的表中的数据?
以下是我目前的情况:

CREATE TABLE Schedule 
(
    movieID INT,
    screeningID INT,
    date DATE,
    time TIME,

    FOREIGN KEY (movieID) REFERENCES Movie (movieID),
    FOREIGN KEY (screeningID) REFERENCES MovieScreening (screeningID)
);

以下是我要插入的数据:

INSERT INTO Schedule VALUES (1, 1, '14-03-2020', '11AM') 
INSERT INTO Schedule VALUES (2, 2, '14-03-2020', '12PM')
INSERT INTO Schedule VALUES (3, 3, '14-03-2020', '1PM')
INSERT INTO Schedule VALUES (4, 4, '14-03-2020', '2PM')
INSERT INTO Schedule VALUES (5, 5, '14-03-2020', '3PM')
INSERT INTO Schedule VALUES (6, 6, '14-03-2020', '4PM')
INSERT INTO Schedule VALUES (7, 7, '14-03-2020', '5PM')
INSERT INTO Schedule VALUES (8, 8, '14-03-2020', '6PM')
INSERT INTO Schedule VALUES (9, 9, '14-03-2020', '7PM')
INSERT INTO Schedule VALUES (10, 10, '14-03-2020', '8PM')
INSERT INTO Schedule VALUES (1, 11, '15-03-2020', '11AM')
INSERT INTO Schedule VALUES (2, 12, '15-03-2020', '12PM')
INSERT INTO Schedule VALUES (3, 13, '15-03-2020', '1PM')
INSERT INTO Schedule VALUES (4, 14, '15-03-2020', '12PM')
INSERT INTO Schedule VALUES (5, 15, '15-03-2020', '3PM')
INSERT INTO Schedule VALUES (6, 16, '15-03-2020', '4PM')
INSERT INTO Schedule VALUES (7, 17, '15-03-2020', '5PM')
INSERT INTO Schedule VALUES (8, 18, '15-03-2020', '6PM')
INSERT INTO Schedule VALUES (9, 19, '15-03-2020', '7PM')
INSERT INTO Schedule VALUES (10, 20, '15-03-2020', '8PM')

这是我在测试格式代码并选择上面创建的表时得到的输出。
截图
我一直试图自己解决这个问题,并在网上寻找一个解决方案,我可以适用于我自己的工作,但我可以使用一些帮助,因为我有点迷路。
编辑:所以我对其中一个答案进行了评论,我只想澄清我的用例以及将日期和时间分开的原因。
所以我的用例是一个电影时间表,我需要将日期和时间分开,这样就可以进行搜索查询来查找链接到特定时间或特定日期的详细信息,因为时间表对于每天都有完全相同的时间表,所以我需要将它们作为分开的数据类型。我在这个数据库中有五个表,还有两个表链接到这个时间表表;一个是电影列表,另一个保存电影放映的详细信息,如票价、电影ID和剧院ID,剧院ID将一个表与剧院列表和剧院信息连接起来。
如果我在excel中创建数据库表之前建立的数据模型有帮助的话,但我遇到的唯一问题是让我的日期和时间以我想要的方式显示出来。
我希望能够调用数据,例如:

SELECT Schedule.movieID, Schedule.time
    FROM Schedule
    WHERE (Schedule.time = '11AM')

当我运行这个,我得到一个返回表,看起来像这样。
但是我更希望time列返回的数据是'hh:mm',我只是不确定如何让它这样做,是否有一个time数据类型只返回'hh:mm'?

s2j5cfk0

s2j5cfk01#

所以 date , time 以及 datetime 数据类型不会以任何格式存储在内部。格式化是显示数据的功能。
你应该经常使用 date , time 以及 datetime 相关的数据类型,因为另一种方法是将它们存储为字符串,这会进一步带来许多问题。
数据的显示实际上应该留给应用程序,但是如果您想将其格式化为查询的一部分,则这取决于您,而不是

select *
from Schedule;

使用

select id, FORMAT([date], 'dd-MM-yyyy'), FORMAT([time], 'HH:mm')
from Schedule;
d8tt03nd

d8tt03nd2#

将日期和时间存储在datetime数据类型的列中。格式不应存储在数据库中。在应用程序或报告中显示日期时应用格式。

idfiyjo8

idfiyjo83#

您应该考虑日期类型的sql格式是yyyy-mm-dd,您只能在查询选择或筛选时更改它,否则,如果您将格式存储在数据库中,您应该将它们存储在其他字符串类型列的nvachar类型中

相关问题