【问题标题】:FormatDateTime(Now(),vbShortDate) giving different date formats in different devices. [duplicate]FormatDateTime(Now(),vbShortDate) 在不同的设备中给出不同的日期格式。 [复制]
【发布时间】:2018-11-14 15:37:29
【问题描述】:

我在一个经典的 asp 项目中工作,我从数据库中选择一个 SQL 查询。该查询在我自己的笔记本电脑上运行良好,并且该查询的日期格式为“11/14/2018”,但它在办公系统中给出了上述错误,当我在 SSMS 中检查查询时,它生成的日期格式为“14” -11-2018'。我尝试更改不同的 VB 日期格式,但结果相同。

这里是查询:

 sql="select count(*) as total from hc_query a, hc_breakup b where a.querytype='hotel' and a.qdate='" & FormatDateTime(Now(),vbShortDate) & "' and a.t_id=b.pnrno and b.bookstatus='half'" '

请给一些建议。谢谢

【问题讨论】:

  • 您惊讶地发现,当您以错误格式将日期作为字符串传递时,它不起作用?使用日期参数。
  • 稍微偏离主题 - 但您不应该通过 where 子句使用旧式连接。发展!我还认为使用单字符表别名是草率和懒惰的编码。

标签: sql-server vbscript


【解决方案1】:

问题不在于代码,而在于函数输出的假设。 FormatDateTime 的文档说明了 NamedFormat 参数:

vbShortDate:2

使用您指定的短日期格式显示日期 计算机的区域设置。

也就是说,输出格式取决于运行代码的计算机的本地配置。根据区域设置,两台不同的计算机可以生成不同的输出。

如果您需要一致的输出来处理以字符串形式存储在数据库字段中的日期,那么您将需要编写自己的函数来确保一致性。

【讨论】:

  • 先生,我尝试将新系统的日期格式更改为“mm/dd/yyyy”,但仍然出现同样的错误。
  • @AshutoshSingh,您不应该依赖区域设置配置(顺便说一下,使用的区域设置配置是与执行代码的凭据下的用户相关联的配置)。如果您有一致的格式要求,请更改构建字符串的代码并且不依赖于系统配置。
  • 感谢您,先生,您宝贵的时间和支持。我清除了一些要点,进一步,我想问一下使用 '.ToString("date format")' 更改日期格式是否是一个好主意,因为我在一些谷歌研究中读到了这一点。
  • @AshutoshSingh,正如在另一个 cmets 中已经指出的那样,您应该更改几件事(没有字符串存储日期,没有串联查询,请使用存储过程,...)但您不能使用 @ 987654323@ 只是因为它在 VBScript 中不存在。它是 .Net 中 DateTime 类的一部分
  • 好的,先生,所有的疑问都解决了。感谢您的支持。
猜你喜欢
  • 2016-06-21
  • 2011-12-14
  • 2013-07-09
  • 1970-01-01
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多