sqlserver数据怎么查询两个时间之间的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver数据怎么查询两个时间之间的数据相关的知识,希望对你有一定的参考价值。

表中有一个字段是出生日期(datetime),获取当前时间-出生日期,如果大于30岁就显示出来, 比如说当前时间是2018.10.18,表中有1988.10.17和1988.10.19的两个时间,把出生时间为1988.10.17的那个人查询出来

参考技术A

1、先比较月数,如果大于360,肯定大于30岁

2、如果月数刚好是360天,比较日期

筛选条件如下:

where datediff(month,'1988-10-17','2018-10-18')>360 or (datediff(month,'1988-10-17','2018-10-18')=360 and DATENAME(day,'1988-10-17')>DATENAME(day,'2018-10-18')) 

自测结果

本回答被提问者和网友采纳

从sql server获取两个日期之间的数据

【中文标题】从sql server获取两个日期之间的数据【英文标题】:Get data between two date from sql server 【发布时间】:2021-05-19 03:50:36 【问题描述】:

我想使用 mssql 和 nodejs 中的 sequelize 查询从 sql server 获取两个日期之间的所有数据。

开始和结束日期来自 react frontend with axios.post。 例如开始日期是2021-01-04T08:53:00.000Z,结束日期是2021-01-05T21:00:00.000Z

app.post('/getData', function (req, res) 
  let startTime=req.body.start
  let endTime=req.body.end

  sequelize.query(` select Date_Time from S001T01  where Date_Time between $startTime and $endTime`, 
    type: sequelize.QueryTypes.SELECT
  ).then(result => 
    console.log(result)
)

);

它返回许多错误,其中一个是 UnhandledPromiseRejectionWarning: SequelizeDatabaseError: Invalid column name '2021-01-05T21:00:00.000Z 23:59:00'.

在表格查看器中显示的 Date_Time 列中

我不知道该怎么办。

感谢您的帮助。

【问题讨论】:

在sql中,双引号用于标识符,单引号用于字符串和日期 我更改了查询,但仍有错误。 Executing (default): select Date_Time from S001T01 where Date_Time between 2021-01-04T08:53:00.000Zand 2021-01-04T21:00:00.000Z (node:2576) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: Incorrect syntax near 'T08:'. 【参考方案1】:

您的日期时间格式可能有误。 2021-01-05T21:00:00.000Z 23:59:00 不对应传统的ISO 8601。

如果您想要 2021-01-04T08:53:00.000Z2021-01-05T21:00:00.000Z 之间的所有条目,您的 SQL 查询应如下所示:

select Date_Time from S001T01  where Date_Time between 2021-01-04T08:53:00.000Z and 2021-01-05T21:00:00.000Z

您还应该考虑在串联时使用修改后的日期时间。

也许类似的东西应该可以完成这项工作:

var dt = new Date();
dt.setHours( dt.getHours() + 2 );

希望对你有帮助。

【讨论】:

嘿,感谢您的回答,但我仍然收到此错误。 Executing (default): select Date_Time from S001T01 where Date_Time between 2021-01-04T08:53:00.000Z and 2021-01-05T21:00:00.000Z (node:12684) UnhandledPromiseRejectionWarning: SequelizeDatabaseError: Incorrect syntax near 'T08:'. 您是否尝试过另一种日期时间格式,例如YYYY-MM-DD HH:mm:ss,而不是 ISO 8601 格式?我可以在论坛上看到,为了在两个日期之间进行查询,格式应该像我上面提到的那样。 SELECT * FROM T_DATES_TDT WHERE TDT_DATE BETWEEN '2006-04-8' AND '2006-04-8 23:59:59.999' 是的,我试过select * from S001T01 where Date_Time between 2021-01-04 21:44:00 and 2021-01-04 22:03:00,但结果是一样的。它总是抛出`'21'附近的语法不正确。` 在日期值之间加上引号可能没问题。 select * from S001T01 where Date_Time between '2021-01-04 21:44:00' and '2021-01-04 22:03:00'forum link

以上是关于sqlserver数据怎么查询两个时间之间的数据的主要内容,如果未能解决你的问题,请参考以下文章

SqlServer2005怎么同时查询两个表的数据?

SQLSERVER语句怎么查询一个时间段的数据

在SQL SERVER中查询数据库中第几条至第几条之间的数据SQL语句怎么写

在mysql数据库中怎么查询出两个时间段之间的数据 ???

sqlserver数据库查询语句

SqlServer数据库中,日期的模糊查询