【问题标题】:How to use the DATETIME type for a variable?如何将 DATETIME 类型用于变量?
【发布时间】:2021-06-18 11:38:30
【问题描述】:

我想做的是创建一个变量date_arrived,当客户为酒店房间进行预订时存储日期和时间值。然后,我想给Insert into 表一个日期和时间值。我能想到的唯一方法是这样的:

CREATE TABLE Reservation
(
    id_reservation SMALLINT IDENTITY(1 ,1) PRIMARY KEY,
    date_arrived DATETIME NOT NULL
)

INSERT INTO Reservation 
VALUES ( ??? );

但我看到人们使用 DATETIME 类型和 @datetime 语法,但我不明白这一点,也不知道它是否适用于我的示例。我知道使用varchar(n) 不方便。那么将日期和时间值注册到变量中的最佳方法是什么?

【问题讨论】:

  • 建议始终明确指定要插入的INSERT INTO Reservation (date_arrived) VALUES ('2021-03-21');
  • 谢谢,这似乎很有帮助,我会试试看
  • 请标记您正在使用的数据库。所有数据库都各不相同,每个数据库似乎都以拥有自己的日期/时间功能而自豪。

标签: sql sql-server datetime variables types


【解决方案1】:

您可以将值插入为:

Insert into reservation values(now());

【讨论】:

  • “values(now())”中的“now()”是什么?我不必像这样自己手动插入不同的日期和时间:插入保留值('mm','dd','yy');或类似的东西?
  • 这是一个SQL函数,当用户点击它时,这个函数会自动插入当前日期和时间。例如:'2018-11-23 17:31:26'
  • 仅限 MySQL
【解决方案2】:

在 MySQL 中,您可以使用 now() 在表中插入值。

这也可以由数据库来处理,这里有一个语法。

CREATE TABLE Reservation(id_reservation SMALLINT IDENTITY(1,1) PRIMARY KEY,
    date_arrived DATETIME Default now() NOT NULL)

这是一个显式填充值的示例。

INSERT INTO reservation (id_reservation,date_arrived) VALUES (678,'2020-11-10 11:26:27');

【讨论】:

  • 很好,这似乎是我正在寻找的。但究竟什么是“now()”,为什么要使用它?因为通常我在不输入“now()”的情况下插入值。
  • 如果您按照我放置的方式使用表创建语法。然后在插入值的时候,你甚至不需要为 now() 插入值。将 now() 视为内置 fxn,它以指定格式为您提供当前日期和时间。只有这么多才能完成你的工作。 ```INSERT INTO 预留(id_reservation)值(678);
  • 啊,好吧,我明白了。我认为我不需要它,因为当客户预订酒店房间时,他会选择他将在该酒店住宿的夜晚的日期和时间,而不是他预订房间的日期和时间.
  • 仅限 MySQL
  • @DaleK 是的,你说得对,我只在 MySql 中使用了它以避免任何歧义,我也将它添加到了答案部分。谢谢。
【解决方案3】:

我认为你混淆了你的要求,听起来你需要的是:

(您尚未标记您的数据库,但它看起来像 SQL Server 语法)

CREATE TABLE Reservation
(
    Reservation_Id INT NOT NULL IDENTITY(1 ,1) PRIMARY KEY,
    Booking_Date DATETIME NOT NULL default (GETDATE()),
    Arrival_Date DATETIME NOT NULL,
    Duration TINYINT NOT NULL default(1),
    Checkout_Date as DATEADD (day, Duration, Arrival_date)
)
  • Reservation_Id 会将您链接到您的其他预订数据,例如客人。
  • Booking_Date 是“现在”当您插入数据时,即进行预订,他们预订的日期 - 这是自动填充的
  • Arrival_Date 是他们到达的日期/时间/预留的房间等,您填写此
  • Duration - 多少天/多少夜等
  • Checkout_Date - 你不用填写,它是根据 Arrival_Date + Duration 计算得出的

假设您的值作为两个变量传递,您将插入数据,

insert into Reservation (Arrival_Date, Duration)
values (@ArrivalDate, @Duration)
select SCOPE_IDENTITY() --< returns the Reservation_Id for use elsewhere.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-13
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 2010-12-22
    • 2012-06-03
    相关资源
    最近更新 更多