AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 173206
Accepted
tfenwick11
tfenwick11
Asked: 2017-05-11 03:42:42 +0800 CST2017-05-11 03:42:42 +0800 CST 2017-05-11 03:42:42 +0800 CST

SQL Server 2000 声明 DateTime 变量以根据当前日期检索结果。但是没有收到基于转换的结果

  • 772

目前,我想通过声明一个变量来测试我的新代码,以根据字段“DateShipped”的当前日期返回结果具有设定值。但是通过研究我注意到 SQL Server 2000 直到 2008 年才获得“GETDATE()”,因此需要 DATETIME。对于我尝试的每种不同的转换格式,尽管今天有可用的当前记录,但我似乎无法返回一组结果。任何帮助,将不胜感激。

日期时间列值:2016-05-19 08:40:18.287

代码部分有问题:

声明@date_shipped DATETIME

SET @date_shipped = dateadd(dd,datediff(dd,0,getdate()),0)

 WHERE  DATEADD(dd, 0, DATEDIFF(dd, 0, O.date_shipped)) = @date_shipped

***代码如下:

DECLARE @date_shipped DATETIME 
        SET @date_shipped = dateadd(dd,datediff(dd,0,getdate()),0)
--@location VARCHAR(10)
--SET @location = 'RAS 2'
--SET @date_shipped = CONVERT(varchar(10), @date_shipped, 23)




SELECT  
      O.Date_Shipped
    , L.Shipped  
    , L.Price 
     , O.Order_no
    , O.Ext
    , O.Cust_Code 
    , O.Ship_To_Name 
    , O.Freight_Allow_Type 
    , TCT.Carton_no 
     , TPM.dim_ext_x  
     , TPM.dim_ext_y 
    , TRCB.Number_of_Boxes 
     , TRCB.Skid_Height_Inches 
    , MAX(O.Routing) AS 'Routing'  
    , MAX(O.User_def_fld9) AS 'bol_no'  
    , MAX(Ship_to_name) AS Ship_to_name_1 
    , MAX(Ship_to_add_3) AS Ship_to_add_3 
    , MAX(L.[location]) AS 'Location' 
    , MAX(O.cust_code ) AS 'Cust_code_1' 
    --, CONVERT(DATETIME, CONVERT(varchar(20) , MAX(O.date_shipped), 23)) AS 'date_shipped'
    , MAX(O.user_def_fld10) AS 'Skids' 
    , MAX(O.user_def_fld12) AS 'Weight' 
    , ISNULL(MAX(BH.est_freight_cost),0) AS 'BOL_est_Freight'
     , TCT.[weight] + TPM.[weight] AS 'Total_Pallet_Weight'

---->>>>>Formula "CUBIC FEET"
    ,CASE 
        WHEN TRCB.skid_height_inches > 0 AND TPM.dim_ext_x > 0 AND TPM.dim_ext_y > 0
            THEN CONVERT(DECIMAL(10,4), (TRCB.skid_height_inches * TPM.dim_ext_x * TPM.dim_ext_y) / 1728) 
                 ELSE 0 END AS 'Cubic_Feet' 
---->>>>>Formula "CUBIC FEET"


---->>>>>Formula "PCF"
    , CASE 
        WHEN TRCB.skid_height_inches > 0 AND TPM.dim_ext_x > 0 AND TPM.dim_ext_y > 0 
            THEN CONVERT(DECIMAL(10,4), (TCT.weight + TPM.weight) / ((TRCB.skid_height_inches * TPM.dim_ext_x * TPM.dim_ext_y) / 1728))
                ELSE 0 END AS 'PCF'
---->>>>>Formula "PCF"


---->>>>>Formula "TOTAL_PCF"
    , CASE WHEN (SUM(TCT.[weight]) + SUM(TPM.[weight])) > 0
         THEN
            CASE WHEN (SUM(CONVERT(DECIMAL(10,4), (TRCB.skid_height_inches * TPM.dim_ext_x * TPM.dim_ext_y) / 1728))) > 0 
                 THEN (SUM(TCT.[weight]) + SUM(TPM.[weight])) + (SUM(CONVERT(DECIMAL(10,4), (TRCB.skid_height_inches * TPM.dim_ext_x * TPM.dim_ext_y) / 1728)))
                 ELSE 0
            END
         ELSE 0  
      END AS 'Total_PCG'
---->>>>>Formula "TOTAL_PCF"


---->>>>>Formula "SHIP TOTAL"
    , CASE 
         WHEN (L.shipped * L.Price > 0 ) 
            THEN (L.Shipped * L.Price)
                ELSE 0 
                    END AS 'ShipTotal'
---->>>>>Formula "SHIP TOTAL"


------>>>>>>>>TEMP TABLE
--INTO #tempTruckSummary
------>>>>>>>>TEMP TABLE

FROM xfers X WITH (NOLOCK)

INNER JOIN xfer_list XL
    ON  X.xfer_no = XL.xfer_no
INNER JOIN orders O WITH (NOLOCK)
    ON X.xfer_no = O.order_no
INNER JOIN ord_list L
    ON  O.order_no = L.order_no
       AND O.order_no = L.order_no 
       AND O.ext = L.order_ext
       AND X.xfer_no = XL.xfer_no
INNER JOIN arcust C WITH (NOLOCK)
    ON O.cust_code = C.customer_code 
LEFT OUTER JOIN armaster A WITH (NOLOCK)
    ON A.customer_code = O.cust_code  
       AND A.ship_to_code = O.ship_to
       AND A.location_code = O.location  
INNER JOIN tdc_carton_tx TCT WITH (NOLOCK)
     ON O.order_no = TCT.order_no
LEFT OUTER JOIN tdc_revshelf_carton_box TRCB WITH (NOLOCK)
    ON TCT.order_no=TRCB.order_no 
       AND TCT.order_ext=TRCB.order_ext 
       AND TCT.carton_no=TRCB.carton_no   
LEFT OUTER JOIN tdc_pkg_master TPM WITH (NOLOCK)
     ON TCT.carton_type=TPM.pkg_code
JOIN ras_bol_details BD WITH (NOLOCK)
    ON X.xfer_no = BD.bl_src_no
       AND X.xfer_no = BD.bl_src_no AND BD.order_type IN ('T','S')
JOIN ras_bol_header BH WITH (NOLOCK)
    ON BD.bl_no = BH.bl_no
       AND O.order_no = BD.bl_src_no 
       AND O.ext = BD.bl_src_ext 


WHERE  DATEADD(dd, 0, DATEDIFF(dd, 0, O.date_shipped)) = @date_shipped
       AND X.to_loc IN ('KM', 'AWNC', 'KMUT', 'AWAZ', 'SM')
       AND O.routing NOT LIKE 'FEDX%'
       AND O.routing NOT IN ('UPS', 'UPS 1', 'UPS 2', 'UPS 3')
       AND ISNULL(O.void,'') <> 'V'
     --  AND L.Location = @Location


GROUP BY
      O.date_shipped
    , L.shipped  
    , L.Price 
     , O.order_no
    , O.ext
    , O.cust_code 
    , O.ship_to_name 
    , O.freight_allow_type 
    , TCT.carton_no 
    , TCT.[weight]
    , TPM.[weight]
     , TPM.dim_ext_x  
     , TPM.dim_ext_y 
    , TRCB.number_of_boxes 
     , TRCB.skid_height_inches 
stored-procedures t-sql
  • 1 1 个回答
  • 5351 Views

1 个回答

  • Voted
  1. Best Answer
    Scott Hodgin - Retired
    2017-05-11T04:06:12+08:002017-05-11T04:06:12+08:00

    为什么不声明两个变量(@Today 和 @Tomorrow)并选择 date_shipped >= @Today 和 date_shipped < @Tomorrow

    DECLARE @Today DATETIME
    DECLARE @Tomorrow DATETIME
    
    SET @Today = dateadd(dd, datediff(dd, 0, getdate()), 0)
    SET @Tomorrow = dateadd(dd, datediff(dd, 0, getdate()) +1, 0)
    
    PRINT @Today
    PRINT @Tomorrow
    

    所以 - 在为 @Today 和 @Tomorrow 声明变量并相应地设置它们的值之后,你的WHERE子句将是这样的

    WHERE  O.date_shipped >= @Today and O.date_shipped < @Tomorrow
    

    假设您想将此逻辑放入存储过程中并传入特定的 DateTime 值(而不是始终使用 GETDATE()),您可以创建如下内容:

    CREATE PROCEDURE GetShippingInformation (@DateShipped DATETIME)
    AS
    BEGIN
        DECLARE @DateShippedBegin DATETIME
        DECLARE @DateShippedEnd DATETIME
    
        SET @DateShippedBegin = dateadd(dd, datediff(dd, 0, @DateShipped), 0)
        SET @DateShippedEnd = dateadd(dd, datediff(dd, 0, @DateShipped) + 1, 0)
    
        PRINT 'You are searching between ' + convert(varchar(20),@DateShippedBegin) + ' and ' + convert(varchar(20),@DateShippedEnd)
    END
    go
    exec GetShippingInformation '2017-01-01'
    GO
    exec GetShippingInformation '2017-06-01'
    GO
    
    • 1

相关问题

  • 优化此 SQL 查询以提高性能

  • 如何从 Oracle 存储过程中将 CTE 作为 REFCURSOR 返回?

  • 如何确定 mysql 数据库中是否存在过程或函数?

  • 是否有人使用 SQL Server 功能来创建按编号区分的存储过程组?

  • MySQL 存储例程中的动态 SQL

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve