这应该很容易
我在表A上有一个日期栏
SELECT * FROM TABLEA DTE = '01 / 02/2010'
问题是这部署在美国服务器上,我无法控制日期作为其arg。
如何告诉SqlServer将此日期视为该格式?
我试过这个:
SELECT * 从TABLEA 在哪里DTE = CONVERT(VARCHAR(10),'01/01/2010',101)AS [DD / MM / YYYY]
答案 0 :(得分:1)
使用安全格式。对于日期(没有时间组件),安全格式为YYYYMMDD,例如今天是'20100209'。
对于日期时间,安全格式为YYYY-MM-DD'T'HH:mm:SS,其中'T'是文字T,所以现在是'2010-02-09T11:10:30'。< / p>
(当我说安全时,我的意思是SQL Server总是明确地知道如何将这些字符串转换为日期时间值)
答案 1 :(得分:1)
答案 2 :(得分:1)
你的最后一次尝试几乎是正确的,但应该是
SELECT * FROM TABLEA WHERE AS_OF_DATE = CONVERT(DATETIME, '01/01/2010', 101)
答案 3 :(得分:0)
另一种选择是双重转换(用作标准时检查性能):
select strTempNo, dtmTempDateStart,
convert(varchar(10), Convert(datetime, dtmTempDateStart, 103), 126) As UTCDate
我在这里使用103,因为数据已经是UTC格式,但这也适用(UTC ISO8601是126)。 如果您的日期始终采用美国格式,则必须使用101。
或者使用112(ISO“安全”格式)并从字符串中删除前8个字符。
数据样本:(抱歉,没有可用的美国日期表)