- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在 vb.net 中生成也有毫秒的当前日期。其实我用:
Date.Now
但是这会返回一个简单的日期 28/12/2015 16:53,我还想要毫秒,例如:
28/12/2015 16:53:48640864
我试过:
Public Shared Function MillisecondsDate()
Return Date.Now.ToString("HH:mm:ss.fffffff")
End Function
但这会返回一个错误的结果:
16:53:56.9884043
我需要一种与 MySql
兼容的格式以获得准确的 lastUpdated
字段。有什么想法吗?
最佳答案
来自评论:我的数据库字段是一个时间戳
并且我使用 varchar 而不是 datetime 或时间戳来修复 temp
TimeStamp
列与 DateTime
列不太一样。根据Documentation :
MySQL converts TIMESTAMP values from the current time zone to UTC for storage, and back from UTC to the current time zone for retrieval. (This does not occur for other types such as DATETIME.)
这是您可能永远看不到的东西,即使 MySQL WorkBench UI 也能将它转换回来。
Fractional Seconds的问题是别的东西。将列定义为 DateTime
或 TimeStamp
时,默认情况下会删除小数秒,以与旧版本兼容。
与其将任何类型的 Date
列定义为字符串/文本/varchar - 当然还必须将其解析回来 - 您可以定义任何一种类型以保留小数秒。在 MySQL 5.6.4+ 中,您可以使用:DATETIME(n)
或 TIMESTAMP(n)
(是的,这就是为什么括号显示在UI 下拉列表)。其中 n
是要存储的小数位数 (0-6)。对于 .NET,3
等同于毫秒。之后,WorkBench UI 也会显示毫秒数:
DateTime(0)
(无小数)TimeStamp(3)
TimeStamp(6)
LastUpdated
列似乎最好由数据库管理,因此您不必通过代码来管理——或者忘记这样做!。使用默认值和 Before_Update
触发器非常简单:
TIMESTAMP(3)
CURRENT_TIMESTAMP(3)
指定为默认值ADD COLUMN
LastUpdated
TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '';
这将自动设置添加到当前时间(UTC 等)的新项目的 LastUpdated
值,以毫秒为单位(TIMESTAMP(6)
可能更好,但问题只担心女士)。请务必在默认值中指定相同数量的数字。
然后,不是在更新每条记录时手动传递 DateTime.Now
(或转换为字符串),而是添加一个触发器来为您更新列。在 MySql 工作台中:
CREATE DEFINER=`root`@`localhost` TRIGGER `test`.`demo_BEFORE_INSERT` BEFORE INSERT ON `demo` FOR EACH ROW
BEGIN
SET new.LastUpdated := now(3);
END
其中大部分是 UI 工具创建的样板。您只需要输入:
SET new.LastUpdated := now(3);
对于这种类型的列,您可以在 BEFORE_INSERT
触发器上添加相同的内容来代替默认值。在 MySQL WorkBench 中,查看表定义时单击“触发器”选项卡 - 只需添加 SET 语句。
测试代码
这显示了从代码到数据库再返回的毫秒数小数部分,并显示触发器有效(使用上面显示的表格):
Dim Usql = "UPDATE Demo SET Foo = @p1 WHERE Id=5"
Dim Ssql = "SELECT Name, StartDate, Foo, LastUpdated FROM Demo WHERE Id=5"
Dim dtVar As DateTime = DateTime.Now
Console.WriteLine("DT ms in code var: {0}", dtVar.Millisecond)
Using dbcon = GetMySQLConnection()
dbcon.Open()
Using cmd As New MySqlCommand(Usql, dbcon)
cmd.Parameters.AddWithValue("@p1", dtVar)
cmd.ExecuteNonQuery()
End Using
Using cmd As New MySqlCommand(Ssql, dbcon)
Using rdr As MySqlDataReader = cmd.ExecuteReader
If rdr.HasRows Then
rdr.Read()
Dim tempDT = rdr.GetMySqlDateTime(1) ' DateTime(0)
Console.WriteLine("DT.MS from DB {0}", tempDT.Millisecond)
Dim mydt = rdr.GetMySqlDateTime(2) ' TimeStamp(6)
Console.WriteLine("Micro from DB {0} ", mydt.Microsecond)
' either get method retains the ms TimeStamp(3)
Dim lstupD = Convert.ToDateTime(rdr("lastUpdated"))
Console.WriteLine("MS from trigger {0}", lstupD.Millisecond)
End If
End Using
End Using
End Using
结果:
DT ms in code var: 615
DT.MS from DB 0
Micro from DB 615413
MS from trigger 615
定义为存储小数秒的列可以精确到微秒(滴答)。请注意,Update SQL 不引用 LastUpdated
列,但它是由触发器更新的。如果您正在逐步调试并使用上述变量,则触发时间可能与其他变量不同,因为时间在您逐步调试时流逝。
关于mysql - 如何保存和保留日期毫秒数(MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34496672/
我的数据库中有两张表,一张用于 field ,另一张用于预订。我需要的是一个查询来选择所有未预订的 field 。见下文: 餐 table 预订具有以下字段: bk_id venue_id 作为(预订
嗨,我是编码新手,我有一些培训项目,其中包括从 HTML 表单输入 MySQL 数据库。它就像你玩过的游戏的日志。第一个日期输入是您开始游戏的时间,第二个日期输入是您完成游戏的时间。但我需要检查器或类
我是这个 sql 编码的新手,我正在尝试学习新的东西。因此,我创建了一个交货表,其中包含一些属性,如商品代码、交货日期、交货数量。所以如何从同一张表中获取第一个交货日期(最小日期)和交货数量以及最晚交
我从支付网关返回了这个日期 2014-05-15T08:40:52+01:00 我得到 2014-05-15T08:40:52 但我无法识别时区 +01:00 的含义 我的位置时区是 UTC−06:0
我快要疯了,请帮忙。 我有一列包含日期时间值。 我需要找到每天的最小值和最大值。 数据看起来像这样 2012-11-23 05:49:26.000 2012-11-23 07:55:43.000
我从 json 数据中获取日期为 2015 年 4 月 15 日晚上 10:15我只想在 html 页面中显示 json 响应数据的时间,例如 10:15 PM这里我放了我的js函数和html代码 J
是否有 javascript 库或其他机制允许我将 .NET 日期/时间格式字符串(即 yyyy-MM-dd HH:mm:ss)传递给 javascript函数并让它相应地解析提供的日期时间值?我一直
我正在使用以下代码以正确的格式获取当前的 UTC 时间,但客户返回并要求时间戳现在使用 EST 而不是 UTC。我搜索了 Google 和 stackoverflow,但找不到适用于我现有代码的答案。
我有以下日期的平均温度数据。我想找到连续至少 5 天低于或高于 0 摄氏度的开始日期。 date_short mean.temp 1 2018-05-18 17.54 2 2018-05-19
它可以在其他网络浏览器中使用,但 IE11 返回无效日期。 为了调试我使用了下面的代码。 console.log('before - ' + date.value); date.value = new
我在 Excel 中有一个数据的 Web 提取,其中日期列带有/Date(1388624400000)/。我需要在 Excel 中将其转换为日期。 最佳答案 能够从 here 中推断出它. 假设字符串
嗨,我的 Schmema 有一个带有 ISO 日期的字段: ISODate("2015-04-30T14:47:46.501Z") Paypal 在成功付款后以该形式返回日期对象: Time/Date
我的 table : CREATE TABLE `tbdata` ( `ID` INT(10) NOT NULL AUTO_INCREMENT, `PatientID` INT(10) NOT
我正在 Ubuntu 服务器 12.04 中编写一个 shell 脚本,它应该比较日志文件中的一些数据。在日志文件中,日期以以下格式给出: [Mon Apr 08 15:02:54 2013] 如您所
我想使用 GROUP BY WITH ROLLUP 创建一个表并获取总行数而不是 null。 $sql ="SELECT IF(YEAR(transaktioner.datum
我正在创建博客文章,在成功迁移我的博客文件后,当我转到我网站的博客页面时返回一个错误(无法解析其余部分:':“Ymd”'来自'post.date|date: "Ymd"') 我似乎无法确定这是语法错误
我正在尝试获取要插入到 CAML 查询中的月份范围,即:2010-09-01 和 2010-09-30。 我使用以下代码生成这两个值: var month = "10/2010"; var month
如何将代码document.write("直到指定日期")更改为writeMessage(date)中的日期?此外,writeMessage(date) 中的日期未正确显示(仅显示年份)。感谢您帮助解
我在 Windows (XP) 和 Linux 上都尝试过 utime()。在 Windows 上我得到一个 EACCES 错误,在 Linux 上我没有得到任何错误(但时间没有改变)。我的 utim
我正在尝试计算发生在同一日期的值的总和(在 XYZmin 中)。 我的数据看起来像这样, bar <- structure(list(date = structure(c(15622, 15622,
我是一名优秀的程序员,十分优秀!