如何将LocalDate转换为java.sql.Date?
尝试:
Record r = new Record();
LocalDate date = new Date(1967, 06, 22);
r.setDateOfBirth(new Date(date));
Run Code Online (Sandbox Code Playgroud)
这失败了(不会编译),我能找到的就是Joda时间的东西.
我正在使用Java 8
在将.NET DateTime(默认为(DateTime)时)转换为SqlDateTime时,我应始终检查.NET日期是否在SqlDateTime.MinValue和SqlDateTime.MaxValue之间[或]是否有一种好方法可以执行此操作.
我试图java.util.Date将其转换为java.sql.Timestamp后插入,我使用以下代码段:
java.util.Date utilDate = new java.util.Date();
java.sql.Timestamp sq = new java.sql.Timestamp(utilDate.getTime());
Run Code Online (Sandbox Code Playgroud)
但是,这是给我sq的2014-04-04 13:30:17.533
有没有办法在没有毫秒的情况下获得输出?
我在用 20120101 = YYYYMMDD
我以某种格式接收数据.日期是数字(8,0)
例如(0,1,2,3,6)
存在具有20120101 = YYYYMMDD该日期字段中的值的行,因此不是日期.
我想检查它是否是日期并转换它,否则它可以为null.
现在以下代码可以正常工作,但我希望有更好的方法.
(CASE WHEN [invoice_date] LIKE '________' --There are 8 underscores
THEN convert(datetime, cast([invoice_date] as char(8)))
END) AS Invoice_Date
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
我在SQL Server中有一个表,其中包含用于不同作业的用户的持续时间.我需要计算用户的总体验数.
Declare @temp table(Id int, FromDate DATETIME, ToDate DATETIME)
INSERT INTO @temp ( Id ,FromDate ,ToDate )
VALUES ( 1 , '2003-1-08 06:55:56' , '2005-5-08 06:55:56'),
( 2 , '2000-10-08 06:55:56' , '2008-7-08 06:55:56'),
( 3 , '2013-6-08 06:55:56' , '2015-1-08 06:55:56'),
( 4 , '2006-4-08 06:55:56' , '2011-3-08 06:55:56' )
SELECT * FROM @temp
Run Code Online (Sandbox Code Playgroud)
我想计算经验总数;
Id FromDate ToDate Difference IN Months
===================================================
1 2003-01-08 2005-05-08 28
2 2000-10-08 2008-07-08 93
3 2013-06-08 2015-01-08 19
4 2006-04-08 2011-03-08 59 …Run Code Online (Sandbox Code Playgroud) 我有2200万条记录的大桌子.我想执行下一个查询:
select auto_alerts from alerts_stat where endDate > "2012-12-01"
Run Code Online (Sandbox Code Playgroud)
为了提高性能,我为endData字段添加了BTREE索引:
CREATE INDEX endDate_index USING BTREE ON alerts_stat(endDate)
Run Code Online (Sandbox Code Playgroud)
在我开始分析查询执行计划之后:
当我想在15到7天之前获取参数时:
explain select alerts_sp from alerts_stat
where endDate between CURDATE() - 15 and CURDATE() - 7;
Run Code Online (Sandbox Code Playgroud)
我有下一个执行计划来处理2,762,088行.
'1', 'SIMPLE', 'browser_plugin_alerts_stat', 'range', 'endDate_index', 'endDate_index', '4', NULL, '2762088', 'Using where'
Run Code Online (Sandbox Code Playgroud)
当我将间隔增加一天时,我收到了:
explain select alerts_sp from alerts_stat
where endDate between CURDATE() - 15 and CURDATE() - 6;
Run Code Online (Sandbox Code Playgroud)
EXPLAIN表示MySQL计划处理所有22,923,126行.
'1', 'SIMPLE', 'browser_plugin_alerts_stat', 'ALL', 'endDate_index', NULL, NULL, NULL, '22932390', 'Using where'
Run Code Online (Sandbox Code Playgroud)
例如,在WHERE过程22,925,642中没有任何条件地选择.
我可以改进执行计划吗?也许我在某个地方有错误,或者是正常的MySQL行为?
mysql performance database-performance sqldatetime database-indexes
System.DateTime可以采用比SQL Server的DateTime更广泛的值.因此,有一类System.Data.SqlTypes.SqlDateTime模仿后者.
因此,我原本期望Entity Framework选择SqlDateTime,但事实并非如此.
所以我的问题是......
当您尝试将DateTime值保存到数据库时,确保DateTime值不会导致问题的最佳做法是什么?
有没有办法强迫EF使用SqlDateTime?
我发现了很多关于四舍五入“向下”时间值的帖子(例如/sf/answers/466692901/),但我有另一个问题:我想四舍五入到更高的分钟而不是更低的分钟,如何我可不可以做?
我的代码:
SELECT
PA.ORE AS TOT_HOURS,
CAST(CAST(PA.ORA_INIZIO AS DATETIME) AS TIME) AS BEGIN_TIME,
CAST(dateadd(minute, datediff(minute, 0, (CAST(PA.ORA_INIZIO AS DATETIME))), 0) AS TIME) AS BEGIN_TIME_ROUNDED
FROM PRG_ATTIVITA PA INNER JOIN PRG_TIPI_ATTIVITA PTA ON PA.ID_TIPO_ATTIVITA = PTA.ID_TIPO_ATTIVITA
INNER JOIN PER_ANAGRAFICA PAN ON PA.ID_DIPENDENTE = PAN.ID_DIPENDENTE
WHERE PA.ID_PROGETTO = 1431 and pta.DESCR_TIPO_ATTIVITA like 'F-%remoto%' and ID_ATTIVITA = 41772
ORDER BY PA.DATA_ATTIVITA
Run Code Online (Sandbox Code Playgroud)
我的结果如下:
TOT_HOURS BEGIN_TIME BEGIN_TIME_ROUNDED
1.50 15:59:59.9970000 15:59:00.0000000
Run Code Online (Sandbox Code Playgroud)
我想要 BEGIN_TIME_ROUNDED = 16:00:00.0000000
注意: 1. 我必须转换我的数据 { CAST(PA.ORA_INIZIO AS DATETIME) } 因为在数据库中我有时间数据作为浮点值 …
我想LocalDate在一个DATE列中存储一个并保持不变.这两个DATE和LocalDate是"本地"类型的定义.因此,时区的概念不应以任何方式干涉.
下面的代码是一个最小的示例,它创建DATE一个在内存数据库中包含列的表.maven工件com.h2database:h2:1.4.192必须位于类路径中.
首先,定义方法insert和retrieve:
static void insert(DataSource ds, String date) throws SQLException {
try (Connection conn = ds.getConnection();
Statement stmt = conn.createStatement()) {
stmt.execute("CREATE TABLE people (id BIGINT NOT NULL AUTO_INCREMENT"
+ ", born DATE NOT NULL, PRIMARY KEY (id) );");
stmt.execute("INSERT INTO people (born) VALUES ('" + date + "')");
}
}
static LocalDate retrieve(DataSource ds) throws SQLException {
try (Connection conn …Run Code Online (Sandbox Code Playgroud) 我想做的是在 SQL Server 中获取一个日期,并找到该日期的最后可能的小时、分钟、秒和毫秒。
所以如果日期是这样的:2021-02-16 13:08:58.620
我想返回:2021-02-16 23:59:59.999
我已经尝试过类似的方法,但它不起作用,我想我错过了转换时间并保留该日期的小时、分钟、秒和毫秒的东西
Select
DateAdd(MILLISECOND, -1, (Convert(datetime, DATEADD(day, 1, DateValue), 101))) as lastPossibleDate
From
Table1
Run Code Online (Sandbox Code Playgroud)