我写了这个proc
alter proc vencedata (@inicio smalldatetime)as
select idconta,vencimento,pagamento,historico,original,formpagto,planoconta,clifor
from financeiro where vencimento >= @inicio
列vencimento(smalldatetime)的格式为mm / dd / yyyy proc以这种格式工作
vencedata '03/28/2013' (mm/dd/yyyy)
但@inicio的日期是dd / mm / yyyy,我需要proc工作 vencedata '28 / 03/2013'
我试过转换,但我写得不错 感谢任何方向
答案 0 :(得分:3)
将CONVERT
与样式参数
从VARCHAR获取SMALLDATETIME
-- From Europe style varchar
DECLARE @d1 VARCHAR(20) = '28/03/2013'
SELECT CONVERT(smalldatetime, @d1, 103)
-- From American style varchar
DECLARE @d2 VARCHAR(20) = '03/28/2013'
SELECT CONVERT(smalldatetime, @d2, 101)
在两种情况下输出都是
2013-03-28 00:00:00
反之亦然,从SMALLDATETIME到VARCHAR
DECLARE @d3 SMALLDATETIME = '2013-03-28'
-- To Europe style
SELECT CONVERT(VARCHAR(20), @d3, 103)
-- To American style
SELECT CONVERT(VARCHAR(20), @d3, 101)
输出继电器
28/03/2013
03/28/2013
答案 1 :(得分:1)
日期,日期时间没有您所说的格式,但您的问题是服务器无法将您的dd/mm/yyyy
格式字符串转换为smalldatetime
。
如果日期以dd/mm/yyyy
格式作为字符串传递,最好是将其转换为 ISO格式 (yyyymmdd
)然后转换在传递给存储过程之前的smalldatetime。
declare @inicio varchar(20) = '28/03/2013',
@inicio_date smalldatetime
select @inicio_date = convert(smalldatetime,
right(@inicio,4) + right(left(@inicio,5),2) + left(@inicio,2))
执行如下的存储过程;
exec vencedata @inicio_date
答案 2 :(得分:1)
试试这个:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: RAFAŁ :D
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE Esample
AS
BEGIN
DECLARE @vencedata datetime
SET @vencedata = convert(datetime, '03/28/2013')
DECLARE @data datetime
SET @data = convert(datetime, (Convert(varchar(60),Month(@vencedata))+'/'+Convert(varchar(60),DAY(@vencedata))+'/'++Convert(varchar(60),YEAR(@vencedata))))
SELECT @data
END
GO
答案 3 :(得分:0)
与Smallldatetime相比,C#将问题日期在00:00:00转换为日期时间
string inicio = dateTimePicker1.Value.ToShortDateString();
string fim = dateTimePicker2.Value.ToShortDateString();
DateTime Dinicio = Convert.ToDateTime(inicio);
DateTime Dfinal = convert.ToDateTime(fim);
Decimal Svt = minaf.TData(Dinicio, Dfinal);
DataTable llena3 = minaf.cargrid3(Dinicio,Dfinal);
技巧是转换为短日期字符串。