Asp classic SQL记录集的日期缺少毫秒;自动格式化为美国语言环境

Asp classic SQL记录集的日期缺少毫秒;自动格式化为美国语言环境,asp-classic,Asp Classic,我使用以下代码从SQL数据库检索日期 set db = Server.CreateObject("ADODB.Connection") db.Open dbConnection Set c1 = Server.CreateObject("ADODB.Command") Set c1.ActiveConnection = db c1.CommandType = adCmdText c1.CommandText = "SELECT [Date] FROM SomeTable WHERE ID=?"

我使用以下代码从SQL数据库检索日期

set db = Server.CreateObject("ADODB.Connection")
db.Open dbConnection

Set c1 = Server.CreateObject("ADODB.Command")
Set c1.ActiveConnection = db
c1.CommandType = adCmdText
c1.CommandText = "SELECT [Date] FROM SomeTable WHERE ID=?"
c1.Parameters.Append c1.CreateParameter("@ID", adVarWChar, adParamInput, 255, CStr(ID))

set rs = Server.CreateObject("ADODB.Recordset")
rs.Open c1, , 1, 3
打印
rs(“日期”)
时,日期打印为
12/1/2017 2:15:07PM

在数据库中运行上述查询将返回此日期
2017-12-01 14:15:06.675

我的总体目标是不接收日期,即四舍五入到下一整秒。我宁愿收到一个日期,其中毫秒剥离,而不是四舍五入。在这种情况下:
2017年12月1日下午2:15:06

以查询返回日期的相同方式接收日期也可以:
2017-12-01 14:15:06.675

在这一点上,我不确定是什么原因导致了日期的自动格式化


非常感谢您的帮助:-)

您可以使用DateDiff,但它能返回的最小单位是秒。但是,从秒数中获取毫秒数没有问题:

milliSecs = DateDiff("s", cdate("1970-01-01"), rs("Date")) * 1000
您最好将该列转换为字符串,并直接在sql中格式化[date]列:

c1.CommandText = "SELECT CONVERT( VARCHAR(24), [Date], 121) FROM SomeTable WHERE ID=?"

关于更多的日期格式,请查看

我不介意这个问题被否决,但想听听我可以在我的问题中改进什么:-)同意。我讨厌看到没有理由的选票被否决。你有机会尝试一下我发布的解决方案吗?@Josh Montgomery它可能会令人困惑,但它源于人们的经验。过去的情况是,社区更加开放,但由于报复,投票人在投票时变得不那么开放和诚实。太好了!非常感谢你。在使用修改后的
SELECT
语句之后,我使用
someVariable=LEFT(rs(“Date”),(LEN(rs(“Date”)-4))
剥离了右边的四个字符(毫秒)。@jrn没有像Josh建议的那样在SQL查询中完成这一切。只需将
CONVERT
中的
VARCHAR(24)
调整到所需的长度,在这种情况下
VARCHAR(20)
将产生相同的结果。@Lankymart这是一个很好的建议。非常感谢。“这一切都可以在SQL查询中完成”——这不是我说的吗?不想表现得好斗,只是好奇我是否错过了什么(除了场地的长度)。。。