请教 VB.NET 中月份相减 要怎样转换类型问题

时间:2022-01-20 18:05:22
两个字符串型 月份 参数(形式:YYYYMM),要在SQL文中做减法。请问下高手这两个参数要怎么转换下类型,才能得出正确的SQL结果呢。

以下是用到的那段SQL
其中MmEndCtoffLastMm 和 AvgOutStcMm  就是会传过去 的 2个月份参数。
LEFT OUTER JOIN 
(SELECT SUM(OT_STC_QTY) AS SUM_OF_OT_STC_QTY ,COUNT(0) 
AS OT_STC_MN FROM BAR_INVN_HST_TRN WHERE OPRT_MM 
BETWEEN (MmEndCtoffLastMm - AvgOutStcMm ) AND MmEndCtoffLastMm 
GROUP BY PRDT_PLNT_CD ,CLR_CD ,FLM_THICK_CD ,PRF_NO ,EFFCTV_SIZ) AS GRP_BAR_INVN_HST



12 个解决方案

#1


希望哪位高手能帮忙,感激不尽。急~~

#2


你可以在VB下相减好,在传给SQL
        Dim c As New System.DateTime(1996, 6, 3, 22, 15, 0)
        Dim c1 As DateTime = DateTime.Today
        Dim diff1 As System.TimeSpan
        diff1 = c1.Subtract(c)
        Dim date4 As System.DateTime
        date4 = c1.Subtract(diff1)
        Dim 你要的日期 As String = Format(date4, "yyyyMM")

#3


         Dim c As New System.DateTime(1996, 6, 3, 22, 15, 0)
        Dim c1 As DateTime = DateTime.Today
        Dim 你要的日期 As String = Format(c1.Subtract(c1 - c), "yyyyMM")

#4


感谢liqiang 拉,我先去试一下~~ 

#5


我想问一下,1996, 6, 3, 22, 15, 0    这些是什么类型

我那两个参数是string型,而且只有年月组合一起的。 也可以么

#6


哎,目前一直在弄怎么把string 型转换成date型了。。。晕头。先去吃饭

#7


比如“200708“这个字符串要转换成date型该怎么写呢,我已经各种尝试都不行了。似乎只有年,月,没有 日 就怎么都不行。。

我这样写的,也不行。
                  dim strMmEndCtoffLastMm = '200708'
                  Dim dateAvgOutStcMm As Date
                Dim dateMmEndCtoffLastMm As Date

                Dim y As Integer = 0
                Dim m As Integer = 0
                y = Integer.Parse(strMmEndCtoffLastMm.Substring(0, 4))
                m = Integer.Parse(strMmEndCtoffLastMm.Substring(4))
                dateMmEndCtoffLastMm.AddYears(y)
                dateMmEndCtoffLastMm.AddMonths(m)
                dateAvgOutStcMm = dateMmEndCtoffLastMm


求教大家勒~~~~~~~~~~~~~~~~

#8


SQL Server 用 Convert 可以将 yyyymmdd 的字符转化为日期,你的字符后面可以添加 '01' 作为 dd:
Convert(date, 112, '200710' + '01')
然后就可以用 DateDiff 求日期差了。

#9


可是我们现在用的数据库是db2~~   现在我连把那个string 转换成date 都转不了勒阿。 求教楼上的vb老鸟老大啊

看下我8楼的问题好吗

#10


DB2 的 To_Date 函数能直接指定格式 yyyymm,更方便。

#11


1996, 6, 3, 22, 15, 0 是年月日小时分钟秒
cdate(string)
cdete ("2007-09-10")

#12


 Year.Text = dateNow.Year.ToString
 Month.Text = dateNow.Month.ToString
樓主可以試下只拿個年份和月份,計算完後再合一起存進數據庫裡去。

#1


希望哪位高手能帮忙,感激不尽。急~~

#2


你可以在VB下相减好,在传给SQL
        Dim c As New System.DateTime(1996, 6, 3, 22, 15, 0)
        Dim c1 As DateTime = DateTime.Today
        Dim diff1 As System.TimeSpan
        diff1 = c1.Subtract(c)
        Dim date4 As System.DateTime
        date4 = c1.Subtract(diff1)
        Dim 你要的日期 As String = Format(date4, "yyyyMM")

#3


         Dim c As New System.DateTime(1996, 6, 3, 22, 15, 0)
        Dim c1 As DateTime = DateTime.Today
        Dim 你要的日期 As String = Format(c1.Subtract(c1 - c), "yyyyMM")

#4


感谢liqiang 拉,我先去试一下~~ 

#5


我想问一下,1996, 6, 3, 22, 15, 0    这些是什么类型

我那两个参数是string型,而且只有年月组合一起的。 也可以么

#6


哎,目前一直在弄怎么把string 型转换成date型了。。。晕头。先去吃饭

#7


比如“200708“这个字符串要转换成date型该怎么写呢,我已经各种尝试都不行了。似乎只有年,月,没有 日 就怎么都不行。。

我这样写的,也不行。
                  dim strMmEndCtoffLastMm = '200708'
                  Dim dateAvgOutStcMm As Date
                Dim dateMmEndCtoffLastMm As Date

                Dim y As Integer = 0
                Dim m As Integer = 0
                y = Integer.Parse(strMmEndCtoffLastMm.Substring(0, 4))
                m = Integer.Parse(strMmEndCtoffLastMm.Substring(4))
                dateMmEndCtoffLastMm.AddYears(y)
                dateMmEndCtoffLastMm.AddMonths(m)
                dateAvgOutStcMm = dateMmEndCtoffLastMm


求教大家勒~~~~~~~~~~~~~~~~

#8


SQL Server 用 Convert 可以将 yyyymmdd 的字符转化为日期,你的字符后面可以添加 '01' 作为 dd:
Convert(date, 112, '200710' + '01')
然后就可以用 DateDiff 求日期差了。

#9


可是我们现在用的数据库是db2~~   现在我连把那个string 转换成date 都转不了勒阿。 求教楼上的vb老鸟老大啊

看下我8楼的问题好吗

#10


DB2 的 To_Date 函数能直接指定格式 yyyymm,更方便。

#11


1996, 6, 3, 22, 15, 0 是年月日小时分钟秒
cdate(string)
cdete ("2007-09-10")

#12


 Year.Text = dateNow.Year.ToString
 Month.Text = dateNow.Month.ToString
樓主可以試下只拿個年份和月份,計算完後再合一起存進數據庫裡去。