我正在尝试通过经典ASP网站上的表单在SQL 2014 Express数据库中保存和检索日期和时间。
这背后的主要思想是,无论此脚本将在何种设置下运行,时间格式将始终相同。
我以[{1}}格式将日期和时间以datetime2
格式存储在SQL中,但它将其存储为dd-mm-yyyy hh:nn:ss
。当我检索日期时,它将其写为yyyy-dd-mm hh:nn:ss
!为什么呢?
计算机已设置正确的时间和日期格式,并且SQL数据库已设置为继承Windows时间和日期格式。
此代码构造我想要的时间格式(dd/mm/yyyy hh:nn:ss AM/PM
):
dd-mm-yyyy hh:nn:ss
我尝试获取日期和时间并按降序排序。这部分有效,虽然它仍然是错误的日期格式和AM / PM,因此排序顺序看起来是随机的而不是按顺序排列。
<%
Dim dd, mm, yy, hh, nn, ss
Dim datevalue, timevalue, dtsnow, dtsvalue
dtsnow = Now()
dd = Right("00" & Day(dtsnow), 2)
mm = Right("00" & Month(dtsnow), 2)
yy = Year(dtsnow)
hh = Right("00" & Hour(dtsnow), 2)
nn = Right("00" & Minute(dtsnow), 2)
ss = Right("00" & Second(dtsnow), 2)
datevalue = dd & "-" & mm & "-" & yy
timevalue = hh & ":" & nn & ":" & ss
dtsvalue = datevalue & " " & timevalue
%>
因此,我尝试应用这些转换,使日期和时间恰到好处:dd-mm-yyyy hh:nn:ss
strSQL = "SELECT * FROM dbo.notes WHERE tag = '" & tagname & "' ORDER BY dt DESC"
然而这不起作用,因为它随后出现“处理URL时服务器上发生错误”或它写入日期和时间格式但只有一个日期和时间存储在数据库中。
我该如何解决这个问题?
答案 0 :(得分:2)
FORMAT()是您正在寻找的SQL Server 2012+功能:
SELECT FORMAT(SYSDATETIME(), 'yyyy-MM-dd hh:mm:ss', 'en-US');
会给你:2017-11-02 11:58:44
另外,如果我理解得很清楚,那么您的解决方案可能就是找到正确的DB排序规则。检查当前的一次运行:
SELECT SERVERPROPERTY('collation');
您可以检查的最后一件事是SET DATEFORMAT,它应该更改会话的环境设置。