You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server提取当日特定时段订单并转换日期格式的实现

解决SQL Server日期筛选与格式转换需求

没问题,我来帮你搞定这个SQL Server的日期处理需求!咱们分两步走:先筛选符合时间范围的订单,再把日期转成你要的格式,具体实现方案如下:

方法一:直接用时间类型比较(直观易读)

这种方式直接提取Order_Date的时间部分做范围判断,代码逻辑一目了然:

SELECT 
    -- 转换为指定格式输出
    FORMAT(Order_Date, 'yyyy-MM-dd hh:mm:ss') AS Formatted_Order_Date,
    -- 这里可以添加你需要输出的其他列
    *
FROM 
    Your_Table_Name  -- 替换成你的实际表名
WHERE 
    -- 筛选当日14:00前的订单
    CAST(Order_Date AS TIME) < '14:00:00'
    -- 同时筛选当日15:00至23:00的订单
    OR CAST(Order_Date AS TIME) BETWEEN '15:00:00' AND '23:59:59'

小说明:

  • CAST(Order_Date AS TIME):把原datetime列的时间部分单独提取出来,方便直接和时间字符串对比。
  • FORMAT(Order_Date, 'yyyy-MM-dd hh:mm:ss'):SQL Server 2012及以上版本支持这个函数,能直接生成你要的格式。如果你的版本低于2012,改用下面的拼接方式也能实现:
    CONVERT(VARCHAR(10), Order_Date, 23) + ' ' + CONVERT(VARCHAR(8), Order_Date, 108) AS Formatted_Order_Date
    
    这里23对应yyyy-MM-dd的日期格式,108对应HH:mm:ss的时间格式,拼接后就是你要的完整格式(如果需要12小时制的hh,可以额外处理小时部分)。

方法二:用DATEPART提取小时数判断

如果需要更精细的时间控制,也可以提取小时数来做条件筛选:

SELECT 
    FORMAT(Order_Date, 'yyyy-MM-dd hh:mm:ss') AS Formatted_Order_Date,
    *
FROM 
    Your_Table_Name
WHERE 
    DATEPART(HOUR, Order_Date) < 14
    OR (DATEPART(HOUR, Order_Date) >= 15 AND DATEPART(HOUR, Order_Date) <= 23)

小说明:

  • DATEPART(HOUR, Order_Date):获取订单日期的小时数(0-23),直接和数值对比就能完成时间范围筛选。

额外提醒

  • 如果你的Order_Date是字符串类型(不是datetime),得先转成datetime再处理,比如用CONVERT(DATETIME, Order_Date, 103)(103对应dd/MM/yyyy的格式)。
  • 如果要严格限定某一天的订单,在WHERE里再加个日期筛选就行,比如CAST(Order_Date AS DATE) = '2018-05-14'。

内容的提问来源于stack exchange,提问作者Bilal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:40:09